阅读背景:

epoll 边沿触发的非阻塞连接读取数据代码记录_cyllsy的博客

来源:互联网 

1、简述
连接socket在边沿触发模式下要采取非阻塞的方式进行读写数据,如果采用阻塞的方式读写,则可能造成死锁,例如,当从客户端读固定字节数据时,如果客户端发送的数据不足,则会阻塞在读固定字节函数处,要唤醒这种状态,则需要客户端有新的数据发送过来,但此时需要epoll_wait返回才能知道有新的数据被发送过来,而程序阻塞在读固定字节函数处,而非在epoll_wait处,因此可能导致读数据处的阻塞不能被唤醒,又例如当向客户端发送数据时,如果客户端的滑动窗口已被填满,此时再向客户端写数据是会阻塞的,只有等待客户端的滑动窗口腾出空间,然后发送信息告知已经处于可写状态时,同理,此时并非阻塞在epoll_wait 处,故不能接收此消息,也就不能唤醒写函数。(此处说明存在一定问题,在此仅作记录,以便后续进一步学习了解之后对比。) 连接socket在边沿触发模式下要采取非阻塞的方式进行读写数据,如果采




你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: