我有一个用于网络连接管理的aysnc线程池模型。一个调度程序线程,它一直调用poll()和一个工作线程池 读/写一次poll()表示如此。
考虑一个poll()表示套接字已准备就绪的情况。但是工作线程尚未处理读取。我禁用read-poll,而工作线程没有处理读取。现在远程端断开连接并轮询() 返回POLLERR / POLLHUP。当工作线程在此之后执行read()调用时会发生什么?
即使有一些数据尚未被读取,read()是否会返回< 0?或
即使套接字有POLLERR / POLLHUP,read()是否从网络读取数据?
答案 0 :(得分:0)
所有待处理的数据将在read()
返回零之前传递。但是,如果read()
返回-1,则挂起的数据可能已丢失。