В моем приложении есть эта нить, которая контролирует набор клиентских сокетов. Я использую select()
для блокировки до тех пор, пока клиент не сделает запрос, чтобы я мог эффективно обрабатывать его без увеличения числа потоков.
Теперь проблема в том, что когда я добавляю нового клиента в список клиентов, мне приходится ждать, пока тайм-аут select()
(установленный на 10 секунд) фактически добавит новый сокет к прослушиваемым сокетам.
Так что я бы хотел select()
взломать до тайм-аута, чтобы можно было немедленно прослушать клиента.
У меня уже есть решение этой проблемы: создайте фиктивную пару сокетов, которую я всегда включаю в список прослушиваемых сокетов, и в которую я пишу, чтобы сделать select()
трещину, но я надеюсь, что есть лучшее решение.
Редактировать :
У меня нет доступа к eventfd()
, потому что GLibc, который я использую, слишком старый (и у меня нет возможности его обновить). Поэтому мне, возможно, придется использовать fifo или сокет.
Вы знаете кого-нибудь?
Спасибо!