Сервер должен прослушивать входящие данные из нескольких сокетов (10-20).После некоторых инициализаций эти сокеты создаются и не изменяются (т. Е. Новые сокеты не принимаются, и ни один из них не должен закрываться в течение срока службы сервера).
Один из вариантов - select()
на всехсокеты, затем обрабатывают входящие данные на сокет (т. е. направляют к правильной функции обработки).
Другой вариант - открыть один поток на сокет и разрешить каждому потоку recv()
и обрабатывать ввод.* (Первый вариант имеет преимущество установки таймаута, но в данном случае это не проблема, так как все сокеты достаточно активны).
Предполагается следующее: на сервере Windows достаточно памяти, так что20 МБ (для 20 потоков) - не проблема, ожидается, что какой-либо из этих вариантов будет быстрее, чем другой?