Mar*_* Ng 4 multithreading epoll
我是epoll的linux服务器编程的新手.我有2个线程:Thread_Accept和Thread_epoll.前者是块接受循环,如果新连接即将到来,它将使用epoll_ctl()添加新的fd.后者是一个很大的epoll_wait()循环.
现在我的问题是:如果Thread_Accept在Thread_epoll处于epoll_wait的中间时执行epoll_ctl(),该怎么办?会有副作用吗?
提前致谢.
问候,马丁
从epoll_wait手册页:
虽然在调用epoll_pwait()时阻塞了一个线程,但是另一个线程可能会将文件描述符添加到等待的epoll实例中.如果新文件描述符准备就绪,则会导致epoll_wait()调用解除阻塞.
因此,添加新文件描述符时没有副作用:-)
(本手册页注释是nathansizemore提到的bug的结果)