когда нечего делать?
Например, запросы на подключение ушли в ос, а подключений еще нет, лучше уйти в sleep или for(;;) или что то получше?
А сервер и так не должен ожидать запросов? (Спать)
посмотри в сторону epoll/boost::asio
Они не блокирующие, т е я отправлю запрос в ос типо скажи мне когда что нибудь придет, и мой код пойдет дальше выполнятся
а через что делаешь?
asio слишком высоко, хочется свой asio)
А выделить отдельный поток который бы ждал события и передавал в другие никак?
wsa , у меня windows server
Если я заблокируюсь на принятии подключения то не смогу читать уже подключенные сокеты. А если на каждое подключение - поток, то он перестанет быть ассинхронным.
Пкл потоков которые обрабатывают подключения и пул потоков которые их принимают
Тогда все равно проблема такая же. Могут быть потоки которые ничем не заняты и что с ними делать?
Ну они спят в ожидании подключения
А те что обрабатывают?
Ну поток принимает подключение и передаёт в другой
Так а что в это время делает "другой" поток когда нечего делать?
Потоки блокируются на поллере системном
Ну как обработал подключение сидит пердит ждёт подключения
Ну условно есть очередь подключений через которые пул принимающий и отдающий общаются
Обсуждают сегодня