2014年10月27日
摘要: 本文无太多内容,主要是几个前面提到过的注意点: 一是epoll的fd需要重新装填。我们将tcp_connection_t的指针保存在数组中,所以我们以这个数组为依据,重新装填fd的监听事件。 //重新装填epoll内fd的监听事件 int i; for(i = 0; i buffer_)) event |= kWri... 阅读全文
posted @ 2014-10-27 20:46 inevermore 阅读(907) 评论(0) 推荐(0) 编辑
摘要: 使用poll与epoll的区别主要在于: poll可以每次重新装填fd数组,但是epoll的fd是一开始就加入了,不可能每次都重新加入 于是采用这种策略: epoll除了listenfd一开始就监听read事件,其他的客户fd加入epoll时,监听的事件都为空。 然后在每次epoll_wait之前,使用epoll_ctl重新设置fd的监听事件。 所以这部分的代码如下:... 阅读全文
posted @ 2014-10-27 20:37 inevermore 阅读(3163) 评论(0) 推荐(1) 编辑
摘要: 关于poll模型监听的事件以及返回事件,我们定义宏如下: #define kReadEvent (POLLIN | POLLPRI) #define kWriteEvent (POLLOUT | POLLWRBAND) #define kReadREvent (POLLIN | POLLPRI | POLLRDHUP) #define kWriteREvent (POLLOUT) 前面... 阅读全文
posted @ 2014-10-27 20:15 inevermore 阅读(1074) 评论(0) 推荐(0) 编辑