2016-12-20 9 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 Получите соединения.

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