Этот ответ ссылается на ответ cdhowie, который связал документ, в котором говорится, что SO_REUSEPORT будет иметь эффект, которого я пытаюсь достичь.
Я исследовал, как и если эта опция реализована и сфокусирована в основном на Boost :: Asio и Linux.
Boost :: Asio устанавливает эту опцию, только если ОС равна BSD или MacOSX. Код для этого содержится в файле boost/asio/detail/reactive_socket_service.hpp
(Boost версии 1.40, в более новых версиях код был перемещен в другие файлы).
Я удивился, почему Asio не определяет эту опцию для таких платформ, как Linux и Windows.
Есть несколько ссылок, обсуждающих, что это не реализовано в Linux:
https://web.archive.org/web/20120315052906/http://kerneltrap.org/mailarchive/linux-netdev/2008/8/7/2851754
http://kerneltrap.org/mailarchive/linux-kernel/2010/6/23/4586155
Также есть патч, который должен добавить эту функциональность в ядро:
https://web -beta.archive.org / веб / 20110807043058 / http://kerneltrap.org/mailarchive/linux-netdev/2010/4/19/6274993
Я не знаю, существует ли эта опция для Windows, но определение portable
в качестве атрибута для программного обеспечения, работающего и в Linux, означает, что SO_REUSEPORT зависит от ОС, и для моего вопроса не существует переносимого решения. .
В одном из обсуждений, которые я связал, рекомендуется для UDP реализовать мастер-слушатель, который затем предоставляет входящие данные нескольким ведомым слушателям.
Я отмечу этот ответ как принятый (хотя и чувствую, что плохо, принимая свой собственный ответ), потому что он указывает, почему подход с использованием SO_REUSEPORT потерпит неудачу при попытке использовать его с переносимым программным обеспечением.