It is thread-safe, but there isn’t much documentation that explicitly states that. See here
BTW, you can also have multiple threads waiting on a single epoll_fd
, but in that case it can get a bit tricky. (I.e. you might want to use edge-triggered EPOLLET
or oneshot mode EPOLLONESHOT
. See here.)