0
我很少知道epoll
,檢查一些文件,然後想後,運行這樣的:如何使用epoll並使處理函數非阻塞?
while(true){
epoll_wait(some_sock_fds);
foreach(usable_fds){
handler(one_fd); <----- this function must be non-blocking ?
}
}
在handler
功能應該有一些關於網絡的讀/寫或文件操作,我想應該是不阻止,是嗎?
如何編寫handler
函數,使其不會阻塞主循環?
它可以阻止,epoll等待,只給你那些不會阻止的fds,所以處理器保證不會阻塞。 –
@RomanHocke在'foreach'循環中,處理第一個'fd'可能花費5s,第二個'fd'應該等待5s,是嗎? – user1418404
「處理第一個fd可能花費5s」第一個fd的數據已準備就緒,由epoll保證,不會有任何等待。 –