工作线程在循环等待时cpu占有率高

wwyyxx26 2009-09-18 05:33:08
工作线程在循环等待时cpu占有率高

使用什么函数可以处理系统事件?
...全文
127 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
oldjliang 2009-09-19
  • 打赏
  • 举报
回复
关于Sleep这个命令,其实是当前线程放弃CPU使用权一段时间,但是这个时间并不是设多小都有效的
比如说一般的32位机,Sleep的最小有效时间是15ms左右
也就是说你Sleep(1),Sleep(3)和Sleep(15)是基本没什么差别的
当然这个最小有效时间和CPU的频率以及操作系统的位数都有关系

一般在线程的循环体里加上Sleep(1)就可以了,如果你的这个线程使用频率不是很高,可以设定一个检测条件,在不用的时候Suspend,然后由外界触发Resume,这样可以更节省一些CPU的使用资源
YMIW163 2009-09-18
  • 打赏
  • 举报
回复
在线程里来个SLEEP就可以了,这个问题我碰到过.
schlafenhamster 2009-09-18
  • 打赏
  • 举报
回复
让工作线程Sleep(xxx),醒来后再看要不要干什么,没事再Sleep。你的cpu就可以干别的了。
fish_gao 2009-09-18
  • 打赏
  • 举报
回复
不需要线程同步一类的直接在你的 循环体内 Sleep就可以,我一般就Sleep(3);这个足够了
vcTiro 2009-09-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 vieri_ch 的回复:]
WaitForSingleObject搭配Sleep
[/Quote]

搭配“Sleep”,为什么呢?

直接用WaitForSingleObject就行了。
尘雨 2009-09-18
  • 打赏
  • 举报
回复
WaitForSingleObject搭配Sleep

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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