我有一个用于网络连接管理的 aysnc 线程池模型。一个持续调用 poll() 的调度程序线程和一个读/写一次 poll() 指示的工作线程池。
考虑 poll() 指示套接字已准备好读取的情况。但是工作线程还没有处理读取。当工作线程尚未处理读取时,我禁用了读取轮询。现在远程端断开连接并且 poll() 返回 POLLERR/POLLHUP。当工作线程在此之后调用 read() 会发生什么?
即使有一些数据尚未读取,read() 是否返回 <0?或者
即使套接字具有 POLLERR/POLLHUP,read() 是否会从网络读取数据?