LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1968|回复: 5

为什么多线程下recv不阻塞?

[复制链接]
发表于 2005-10-3 00:48:18 | 显示全部楼层 |阅读模式
现在在做一个代理服务器,需要用到多线程。
一个线程一直在接收数据,另一个一直发送。
但是当接收进程将数据接收完毕之后,继续recv,这时候按我想的话,线程应该阻塞在这里,但是结果是一直收到长度为0的数据,并没有阻塞(抓包看出其实并没有数据进来)。
所以导致CPU占用率很高,兄弟们有没有什么好的主意?伤脑筋啊!
发表于 2005-10-3 13:04:45 | 显示全部楼层
什么类型的套接字?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-10-3 14:57:16 | 显示全部楼层
tcp的
用标准的send和recv函数
回复 支持 反对

使用道具 举报

发表于 2005-10-3 15:19:01 | 显示全部楼层
贴点代码看看?
回复 支持 反对

使用道具 举报

发表于 2005-10-3 15:30:05 | 显示全部楼层

  1. man recv
  2. ...
  3. RETURN VALUE
  4.        These  calls  return  the  number  of bytes received, or -1 if an error
  5.        occurred. The return value will be 0 when the  peer  has  performed  an
  6.        orderly shutdown.
复制代码


感觉可能是你的代码的问题, 把代码贴出来看看.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-10-4 11:06:52 | 显示全部楼层
有可能是对方已经关闭了连接,所以我的接受线程不停收到0字节。呵呵
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表