LINUX.ORG.RU

История изменений

Исправление gh0stwizard, (текущая версия) :

допустим, каждый воркер тоже слушает главный сокет

Ядро на вызов accept() отдаст клиентский сокет тому процессу, который готов. При этом дескриптор блокируется ядром, скажем так, в однопоточном режиме. Т.о. кол-во воркеров не увеличивает производительность вызова accept(), т.к. bottleneck в самом ядре, а не сишной либе/еще где-то. Это справедливо для линукса, в бсд, возможно, иначе, не интересовался.

пока снова управление не вернётся в EV?

В EV ты передашь только клиентский сокет. Для fork-модели есть модуль FDPass (или как-то так, Марк Лемман, автор libev делал свой модуль для fdpass).

Исходная версия gh0stwizard, :

допустим, каждый воркер тоже слушает главный сокет

Ядро на вызов accept() отдаст клиентский сокет тому процессу, который готов. При этом дескриптор блокируется ядром, скажем так, в однопоточном режиме. Т.о. кол-во воркеров не увеличивает производительность вызова accept(), т.к. bottleneck в самом ядре, а не сишной либе/еще где-то. Это справедливо для линукса, в бсд, возможно, иначе, не интересовался.