一个关于poll与线程的问题
主线程接受连接,并且poll所有连接的pollin事件,处理客户端发送过来的数据:
client[max_fd].events = POLLIN;
int ready = poll (client, max_fd + 1, timeout);
recv(fd);
另外开了一个线程,用主线程的连接句柄进行数据发送
send(fd);
现在问题是如果接受客户端数据没有问题,但是发送线程一调用send(fd),主线程poll就会返回1,并且在该fd句柄上报pollerr和pullhup错误,但是数据确实通过socket发送到客户端了,但是我主线程收到pollerr之后就只好关闭连接了
为什么fd上在poll会报错呢?
谢谢各位指点,感谢先