socket recv阻塞时是否占用CPU

cc_net 2010-12-09 03:41:04
客户端,在使用阻塞模式socket时,每一个SOCKET连接用一个线程recv接受数据

多线程SOCKET,如果没有数据,recv阻塞,这个时候是否会占用CPU?

目前在手机上CPU占用过高,不知道是否和这个有关?

我给recv设置超时时间,如果超时就sleep一下,然后再recv,这样是否可行。

只讨论阻塞模式下的recv.

...全文
759 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
luowei886 2012-11-11
  • 打赏
  • 举报
回复
大数据处理,内存计算,云计算,云存储,云会议技术研究群123749520
cc_net 2010-12-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 visualeleven 的回复:]
int nTimeOut = 3000; // 超时值为3s
setsockopt(SOCKET, SOL_SOCKET, SO_RCVTIMEO, (char*)&nTimeOut, sizeof(nTimeOut));
[/Quote]

恩,我已经修改好了。
Eleven 2010-12-09
  • 打赏
  • 举报
回复
int nTimeOut = 3000; // 超时值为3s
setsockopt(SOCKET, SOL_SOCKET, SO_RCVTIMEO, (char*)&nTimeOut, sizeof(nTimeOut));
yihandrensunyong 2010-12-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 cc_net 的回复:]
那就是阻塞时还是占用CPU时间,只是时间片到了切换到其他线程?

那我设置超时,如果超时,主动sleep放弃CPU,这样应该可以减少CPU占用吧。
[/Quote]
正解
cc_net 2010-12-09
  • 打赏
  • 举报
回复
那就是阻塞时还是占用CPU时间,只是时间片到了切换到其他线程?

那我设置超时,如果超时,主动sleep放弃CPU,这样应该可以减少CPU占用吧。

小马喝水 2010-12-09
  • 打赏
  • 举报
回复
阻塞的时候线程还是会处在可调度状态,会占用CPU,如果开的线程不是很多的话,recv阻塞的话影响应该不会很大的

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧