2016-12-20 5 views
0

Опция SO_REUSEPORT не работает на macOS с libuv.SO_REUSEPORT на macOS с libuv

uv_loop_init

uv_tcp_init_ex

uv_fileno // получить FD

INT OPTION_VALUE = 1; setsockopt (FD, SOL_SOCKET, SO_REUSEPORT, & OPTION_VALUE, SizeOf (INT)

uv_tcp_bind

uv_thread_create 4

я вижу 4 тот же адрес и порт связывания на 0.0.0.0:8080, но только thread1 в connection_cb работает, так что могу ли я использовать эту опцию с моей программой? thx.

ответ

0

macOS (и другие BSD) имеют разную реализацию SO_REUSEPORT, чем Linux. В относительно недавних версиях Linux это позволит вам балансировать нагрузку на уровне ядра, но на BSD только последний сокет для привязки wi Получите соединения.

Короче говоря, его нельзя заставить работать, увы.

Смежные вопросы