Прослушивание нескольких сокетов: выбор против многопоточности - PullRequest
3 голосов
/ 28 января 2012

Сервер должен прослушивать входящие данные из нескольких сокетов (10-20).После некоторых инициализаций эти сокеты создаются и не изменяются (т. Е. Новые сокеты не принимаются, и ни один из них не должен закрываться в течение срока службы сервера).

Один из вариантов - select() на всехсокеты, затем обрабатывают входящие данные на сокет (т. е. направляют к правильной функции обработки).

Другой вариант - открыть один поток на сокет и разрешить каждому потоку recv() и обрабатывать ввод.* (Первый вариант имеет преимущество установки таймаута, но в данном случае это не проблема, так как все сокеты достаточно активны).

Предполагается следующее: на сервере Windows достаточно памяти, так что20 МБ (для 20 потоков) - не проблема, ожидается, что какой-либо из этих вариантов будет быстрее, чем другой?

1 Ответ

2 голосов
/ 28 января 2012

В вашем приложении не так много всего.Как правило, использование потока на сокет проще, чем асинхронный подход, потому что это более простая общая структура и легче поддерживать состояние.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...