web-dev-qa-db-ja.com

epollはスレッドセーフですか?

Epollには2つの機能があります。

  1. epoll_ctl
  2. epoll_wait

同じepoll_fdを使用する場合、それらはスレッドセーフですか?
1つのスレッドがepoll_waitを呼び出し、他のスレッドが同時にepoll_ctlを呼び出すとどうなりますか?

33
atomd

スレッドセーフですが、明示的に述べているドキュメントはあまりありません http://linux.derkeiler.com/Mailing-Lists/Kernel/2006-03/msg00084.html を参照してください。

ところで、1つのepoll_fdで複数のスレッドを待機させることもできますが、その場合は少し注意が必要です(つまり、エッジトリガー(EPOLLET)またはワンショットモード(EPOLLONESHOT)を使用することをお勧めします http ://linux.die.net/man/2/epoll_ctl

22
cmeerw