Mehrfaches Listen (z.B. Apache) - geht das?
-
Hallo!
Ich habe 3 kurze Fragen. Ich habe gelesen, dass man den Apache in mehreren Modi - entweder als Prefork (1 Prozess pro HTTP-Anfrage) oder mit Worker-Threads (mehrere Anfragen pro Child-Prozess) benutzen kann.
1. Der letzte Modus würde ja bedeuten, dass man z.B. mit der fork-Funktion den Socket "kopieren" und in mehreren Prozessen (darin wieder mehreren Threads) auf dem gleichen Socket lauschen und Verbindungen annehmen kann?
2. Wie sieht das Ganze praktisch aus? Wenn mir im Poll ein Event angezeigt wird und mehrere Prozesse/Threads auf dem Socket gleichzeitig lauschen, zeigt dann z.B. epoll das Event in mehreren Threads gleichzeitig an oder wird es nur dem "Ersten" "zugeteilt", der es dann verarbeitet? Wenns im Apache geht, müsste es doch auch für einen "Normalo-Programmierer" gehen, oder wie schafft der Apache das?
3. Im Forum wird ja manchmal eine Lösung Listenthread - Queue - Worker-Threads favorisiert. Ginge es auch, dass die Worker-Threads selbst sich im Poll die Aufgaben "ziehen" und verarbeiten? Dann könnte man ja etliche Mutexe und Queues als "Performance-Killer" einsparen...
Viele Grüße