Ich habe gehört, dass das Mischen von Forking und Threading in einem Programm sehr problematisch sein könnte, oft mit mysteriösen Verhalten, insbesondere im Umgang mit freigegebenen Ressourcen, wie Sperren, Pipes, Dateideskriptoren. Aber ich verstehe nie genau, was genau die Gefahren sind und wann diese passieren können. Es wäre großartig, wenn jemand mit Fachkenntnissen in diesem Bereich ein bisschen mehr im Detail erklären könnte, welche Fallstricke es gibt und was bei der Programmierung in einer solchen Umgebung zu beachten ist.Fork in Multi-Thread-Programm
Zum Beispiel, wenn ich einen Server schreiben möchte, der Daten von verschiedenen Ressourcen sammelt, eine Lösung, die ich dachte, ist der Server spawns eine Reihe von Threads, jeder Popen ein anderes Programm aufrufen, um das eigentliche zu tun arbeiten, offene Leitungen öffnen, um die Daten vom Kind zurück zu bekommen. Jeder dieser Threads antwortet auf seine eigene Arbeit, kein Datenaustausch in s/w, und wenn die Daten gesammelt werden, hat der Haupt-Thread eine Warteschlange und diese Worker-Threads werden das Ergebnis einfach in die Warteschlange stellen. Was könnte mit dieser Lösung schiefgehen?
Bitte schränken Sie Ihre Antwort nicht ein, indem Sie einfach mein Beispielszenario "beantworten". Irgendwelche Vorschläge, alternative Lösungen oder Erfahrungen, die nicht mit dem Beispiel verbunden sind, aber hilfreich sind, um ein sauberes Design zur Verfügung zu stellen, wären großartig! Vielen Dank!
hier ist ein [gut lesen] (http://thorstenball.com/blog/2014/10/13/why-threads-cant-fork/) mit mehr Details zum Thema - –