Słyszałem, że miksowanie rozwidlania i gwintowania w programie może być bardzo problematyczne, często skutkujące tajemniczym zachowaniem, szczególnie gdy mamy do czynienia z zasobami współdzielonymi, takimi jak zamki, rury, deskryptory plików. Ale nigdy w pełni nie rozumiem, jakie dokładnie niebezpieczeństwa są i kiedy mogą się one zdarzyć. Byłoby wspaniale, gdyby ktoś z doświadczeniem w tej dziedzinie mógł wyjaśnić nieco więcej szczegółów na temat pułapek i tego, co należy zachować podczas programowania w takim środowisku.widelec w wielowątkowym programie
Na przykład, jeśli chcę napisać serwer, który zbiera dane z różnych zasobów, jednym z rozwiązań, które myślałem, jest to, aby serwer spawnował zestaw wątków, każdy popen wywoływał inny program do wykonania pracować, otwierać rury, aby odzyskać dane od dziecka. Każda z tych odpowiedzi wątków dla własnej pracy, brak wymiany danych w b/w nich, a gdy dane są zbierane, główny wątek ma kolejkę, a te wątki robocze po prostu umieszczą wynik w kolejce. Co może pójść nie tak z tym rozwiązaniem?
Proszę nie zawężać odpowiedzi, po prostu "odpowiadając" na mój przykładowy scenariusz. Wszelkie sugestie, alternatywne rozwiązania lub doświadczenia, które nie są związane z tym przykładem, ale pomocne w zapewnieniu czystego projektu, byłyby świetne! Dzięki!
Tutaj jest [dobra wiadomość] (http://thorstenball.com/blog/2014/10/13/why-threads-cant-fork/) z dodatkowymi informacjami na temat tego tematu - –