программирование сокетов c ++: создание нескольких потоков - PullRequest
0 голосов
/ 12 мая 2018

Я работаю над приложением для запуска нескольких потоков в режимах прослушивания и вызова после создания сокетов.Прямо сейчас, если я запускаю один поток, процесс как бы зависает, потому что поток ждет данных.Так что для меня ясно, что мне нужно запустить поток в асинхронном процессе, чтобы остальная часть приложения продолжала работать.

Должен ли я запустить поток в:

  • отдельные потоки
  • отдельные процессы с использованием fork
  • также читайте о select, будет ли это работать
  • Решают ли блокирующие / неблокирующие сокеты эту проблему.

Это приложение делается на с ++.

1 Ответ

0 голосов
/ 12 мая 2018

Вы можете использовать библиотеку типа Boost.Asio или функцию C poll() (или select(), которая делает в основном то же самое), чтобы ожидать несколько сокетов одновременно. В любом случае, вы хотите «мультиплексировать» сокеты, то есть вы блокируете до тех пор, пока у какого-либо из них не будут доступны данные, а затем вы будете читать из этого. Это количество сетевых приложений, которые обычно создаются и являются более эффективными, более масштабируемыми и менее подверженными ошибкам, чем наличие потока или процесса для каждого соединения.

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