我有点困惑。如果fd准备好了,epoll是否需要轮询循环检查?
完全同步的I/O操作是否意味着浪费CPU周期?
最后,如果I/O就绪,是否可以获得通知内核的完全异步I/O方法?

最佳答案

如果fd准备好了,epoll是否需要轮询循环检查?
对。您调用epoll_wait函数,它会一直等到任何fd就绪,然后告诉您哪个fd就绪。
是完全同步的I/O操作吗
取决于你所说的“同步”是什么意思。epoll_wait将等待,除非给它0毫秒的超时。
这意味着浪费CPU周期吗?
不,没有。
最后,如果I/O就绪,是否可以获得通知内核的完全异步I/O方法?
当I/O就绪时,您不会试图通知内核,它已经知道这一点。您试图让内核在I/O就绪时通知您的程序。
对于“完全异步通知”you can get the kernel to send you a SIGIO signal-信号是完全异步通知。但实际上您并不希望这样做,因为在不造成死锁的情况下编程是一件令人头疼的事情。如果你真的使用了它,你可能最终会把你的信号转换回某种同步通知。

关于c - Linux Epoll如何检查Ready Fd:同步还是异步?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49182737/

10-14 13:41
查看更多