【发布时间】:2013-04-30 00:04:30
【问题描述】:
我正在尝试在特定时间间隔后在套接字中写入一些数据。我有两个线程,一个线程维护 TCP 连接,另一个线程生成数据。
数据生成 therad 生成数据,并将其写入共享内存。服务器线程从共享内存中读取数据,并将其发送给客户端。
但是,当数据生成线程变慢时,当涉及大量计算时,服务器线程在尝试写入客户端时会收到 EWOULDBLOCK 错误。但是,令人惊讶的是,从客户端来看,并没有这样的错误。
如果我没记错的话,当服务器比客户端快并且套接字缓冲区在再次写入之前未完全读取时,将返回 EWOULDBLOCK 错误。但是,这里的情况完全相反。
可能是因为服务器therad一直处于休眠状态,直到数据生成线程完成(数据线程具有更高的优先级)。
有人能解释一下这里可能发生的事情吗?
【问题讨论】: