Асинхронный против синхронного сокета - PullRequest
3 голосов
/ 01 июня 2011

У меня есть ситуация, что будет 500 одновременных подключений к серверу. Что касается времени отклика, какой метод быстрее? (асинхронный или синхронный) И каковы причины этого?

Я знаю, что асинхронный сокет похож на список соединений, тогда он будет спрашивать каждое соединение, есть ли у вас что-нибудь для отправки или получения. Если список очень длинный, то и время ответа может занять больше времени. Это правильно?

Ответы [ 2 ]

3 голосов
/ 01 июня 2011

Если вы используете синхронные сокеты, то для 500 соединений потребуется 500 потоков. Плохая идея. Расходы на планирование такого количества потоков уменьшат затраты на отслеживание 500 асинхронных сокетов.

Кстати, вы не переключаетесь между каждым сокетом, спрашивая его, готов ли он к передаче. Вы используете асинхронные API, такие как select() или порты завершения ввода / вывода.

2 голосов
/ 02 июня 2011

Асинхронные сокеты будут работать лучше. Они используют IOCP внутри, что является очень эффективным способом обработки ожидающих операций ввода-вывода.

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

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