История изменений
Исправление
gh0stwizard,
(текущая версия)
:
допустим, каждый воркер тоже слушает главный сокет
Ядро на вызов accept() отдаст клиентский сокет тому процессу, который готов. При этом дескриптор блокируется ядром, скажем так, в однопоточном режиме. Т.о. кол-во воркеров не увеличивает производительность вызова accept(), т.к. bottleneck в самом ядре, а не сишной либе/еще где-то. Это справедливо для линукса, в бсд, возможно, иначе, не интересовался.
пока снова управление не вернётся в EV?
В EV ты передашь только клиентский сокет. Для fork-модели есть модуль FDPass (или как-то так, Марк Лемман, автор libev делал свой модуль для fdpass).
Исходная версия
gh0stwizard,
:
допустим, каждый воркер тоже слушает главный сокет
Ядро на вызов accept() отдаст клиентский сокет тому процессу, который готов. При этом дескриптор блокируется ядром, скажем так, в однопоточном режиме. Т.о. кол-во воркеров не увеличивает производительность вызова accept(), т.к. bottleneck в самом ядре, а не сишной либе/еще где-то. Это справедливо для линукса, в бсд, возможно, иначе, не интересовался.