- 论坛徽章:
- 0
|
已经确认不超过1000个,还没达到__FD_SETSIZE 1024.所以不会出现超限问题。也已经确认是maxfd+1了。
目前最烦恼是这两点:
1. lighttpd里实现一定是认为三个集置位的不同FD之和,否则它就实现错了,而LINUX代码是三个集置位之和。我相信NIX代码,所以:
for (...){
if (FD_ISSET(fdn->fd, &me->rset)) {
n--;
if (FD_ISSET(fdn->fd, &me->save_rset)) re |= POLLER_IN;
}
if (FD_ISSET(fdn->fd, &me->wset)) {
n--;
if (FD_ISSET(fdn->fd, &me->save_wset)) re |= POLLER_OUT;
}
if (FD_ISSET(fdn->fd, &me->eset)) {
n--;
if (FD_ISSET(fdn->fd, &me->save_eset)) re |= POLLER_ERR;
}
}
assert(n==0);
但偶现assert,打日志发现n<0了。
2.怎么让套接字异常呢?这样好在例子里测试。 |
|