История изменений
Исправление firkax, (текущая версия) :
У тебя какое-то странное представление о цикле событий. Делается так: создаётся некоторое количество воркеров, которые параллельно делают accept на слушающий сокет. Кто соединение поймал - тот дальше его и обрабатывает, на этом механика распределения нагрузки по воркерам (воркер - это процесс а не тред) заканчивается. Каждый воркер делает в цикле epoll_wait() (ну или лучше kevent()) и обрабатывает все события. Никаких «раскидываний по тредам» там не происходит, всё уже раскинуто раньше (коннекты по процессам).
Треды могут быть нужны, если у тебя монолитное приложение с единым на всех состоянием, которое ты хочешь держать в памяти процесса. Но http-сервер это явно не тот случай.
Исходная версия firkax, :
У тебя какое-то странное представление о цикле событий. Делается так: создаётся некоторое количество воркеров, которые параллельно делают accept на слушающий сокет. Кто соединение поймал - тот дальше его и обрабатывает, на этом механика распределения нагрузки по воркерам (воркер - это процесс а не тред) заканчивается. Каждый воркер делает в цикле epoll_wait() (ну или лучше kevent()) и обрабатывает все события. Никаких «раскидываний по тредам» там не происходит, всё уже раскинуто раньше (коннекты по процессам).