边触发epollc

边触发epollc,c,sockets,epoll,C,Sockets,Epoll,在边缘触发的epoll事件中,我读取一个套接字(或多个套接字,如果需要),直到不再有数据(EAGAIN或eWooldblock),然后循环回epoll\u wait)。如果在处理该读取时,另一个套接字(当前未被读取的套接字)准备读取,会发生什么情况?边缘触发的epoll是否会忽略这一点,因为它在触发/信号时没有在epoll\u wait中阻塞,或者它会在下次调用epoll\u wait时立即返回事件数组中的套接字?这确实会起作用,epoll的作用就好像在您进行epoll_wait调用之前发生在e

在边缘触发的epoll事件中,我读取一个套接字(或多个套接字,如果需要),直到不再有数据(
EAGAIN
eWooldblock
),然后循环回
epoll\u wait
)。如果在处理该读取时,另一个套接字(当前未被读取的套接字)准备读取,会发生什么情况?边缘触发的epoll是否会忽略这一点,因为它在触发/信号时没有在
epoll\u wait
中阻塞,或者它会在下次调用
epoll\u wait
时立即返回事件数组中的套接字?

这确实会起作用,epoll的作用就好像在您进行epoll_wait调用之前发生在epoll组上的所有事件都发生在您进行调用的那一刻。epoll就是这样设计的,所以不用担心这种用法。只要您处理在epoll_wait返回时触发的所有事件,您就不必担心在调用它之间发生的任何事件,它们将在下次调用它时被捕获


基本上:您的使用情况良好,请继续:)

如果可用数据尚未被读取或正在进行读取,您应该会看到另一个事件。好的,谢谢,我只是想澄清一下,我说的是一个不同的套接字变得比已被读取的套接字更可读,因此数据不会被正在进行的读取捕获(当然,除非我做错了)!