2
我正在用Android ndk,使用epoll編寫網絡通信程序。 我發現「epoll_wait」喚醒不是很準確如何處理這種情況:andorid epoll_wait返回-1和errno = 4使用ndk
while(1){
struct epoll_event events[3];
log_string("epoll_wait start");//here will print start time
events_len = epoll_wait(_epoll_fd, events, 3, 20 * 1000);// wait 20 second,for test,I use pipe instead of socket,monitor a pipe EPOLLIN event
if (events_len <= 0) {
log_string("epoll_wait end events_len=%d,errno=%d", events_len, errno);//Normally,the events_len always is 0,and errno is 0
}
}
上面的代碼的PC(如Ubuntun PC)上運行是很正常的,如所預期的方法。
如果它運行在Android手機上(使用Android服務,單獨運行的線程)如預期一樣。
經過一段時間,epoll_wait變得不是很準確,有時得到-1,errno = 4,有時候等待很久。
所以我只知道現象,但不知道爲什麼。
你能告訴我爲什麼,告訴我使用android epoll的最佳做法嗎? thx