これは質問 14221339 の続きです。
epoll_wait()
ループ内で実行されているスレッド プールがあります。
外部スレッドはepoll_ctl()
、リスナーソケットを呼び出して追加します
(EPOLLET | EPOLLONESHOT | EPOLLIN)
.
スレッド プールに 1 つのスレッドしかない場合EPOLLIN
、最初の (そして唯一の) 接続試行のイベントの受信に断続的に失敗します。スレッド プールを 2 つに増やすと、ほとんどの場合、EPOLLIN
イベントの受信に失敗します。
私の理解では、epoll API はスレッドセーフですが、この観察結果はそうでないことを示しているようです。