Программирование на сокете с моделью сервера пула потоков в Stack Overflow

Я работаю на сервере в C ++, который будет подключаться к множеству клиентов через UDP. Я решил, что пул потоков будет лучше всего обрабатывать входящие датаграммы из заданного сокета.

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

Из того, что я готов, кажется, что вызовы recvfrom и sendto являются атомарными, и у меня уже есть выделенный поток для прослушивания сокета (в настоящее время он не блокируется и использует вызовы для выбора, чтобы выяснить, готов ли сокет для чтения из ).

Если бы я пошел по собственному желанию, я бы, вероятно, использовал бы другой сокет для отправки и использовал несколько потоков для этого (при условии, что все действия были действительны).

Не уверен, насколько это будет полезно, но это общая идея:
введите описание изображения здесь

2

Решение

Нет никакого преимущества в использовании нескольких сокетов UDP для нескольких потоков, если они не блокируются, а использование одного связанного сокета UDP лучше соответствует вашим заявленным требованиям. Это часть удовольствия от реализации протоколов без учета состояния и датаграмм.

Это адрес / подтвердить ваш вопрос (ы)?

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]