Linux网络编程 epoll中EPOLLIN EPOLLOUT信号无法触发

比如
if(events[i].events&EPOLLIN)
{
int bytes_read=read(m_sockfd,read_buf,READ_BUFFER_SIZE);
}
这样会触发EPOLLIN
但如果把read()封装到比如service类的sread()函数中
if(events[i].events&EPOLLIN)
{
service.sread()
}
便不会触发EPOLLIN事件
请问问题出在哪 我使用同一个测试程序 第一种写法就可以触发第二种就不行

http://www.cnblogs.com/moodlxs/archive/2011/12/16/2290288.html

第一,模式是什么?第二,你注册监听了什么事件?第三,accept的读事件触发,跟clientfd的读事件触发分清楚了吗?第四,经我自己实验,ET模式下,服务端注册clientfd的读写事件,当读事件触发时,写事件的flag位也是1,所以,理解epoll_wait的返回,返回的是个fd的状态,返回当时是处于readable与writable的状态,而不要把他理解为所谓的事件触发。另LT模式下,不要注册clientfd的写,因为,一般demo,写不满缓冲区的,那就一直处于writable状态,那epoll_wait会一直返回,要是打印控制台日志,会狂输出的~~要注意是状态,而不是所谓的事件。状态切换通知一次,就是ET,同一状态下的不断的通知,就是LT。
还有,建议你去了解一下epoll的回射模型,加深一下对epoll的理解~