Я нахожусь в процессе разработки многопоточного TCP-сервера с использованием Berkely SOCKET API под Linux на системно-независимом языке Си.Сервер должен выполнять мультиплексирование ввода-вывода, поскольку сервер является централизованным контроллером, который управляет клиентами (которые постоянно поддерживают постоянное соединение с сервером (если только на компьютере, на котором работает клиент, происходит сбой и т.д.)).Сервер должен обрабатывать как минимум 500 клиентов.У меня есть 16-ядерная машина, я хочу, чтобы я создал 16 потоков (по одному на ядро) и основной поток.Основной поток будет listen()
подключаться, а затем отправлять каждое подключение в списке очередей потоку, который затем вызовет accept()
, а затем использует вызов select()
sys для выполнения мультиплексирования ввода / вывода.Теперь проблема в том, как мне узнать, когда нужно отправлять поток для вызова accept()
.Я имею в виду, как мне узнать в главном потоке, что на listen()
ожидается соединение, ожидающее подключения, чтобы я мог назначить поток для обработки этого соединения.Вся помощь высоко ценится.Спасибо.