多线程程序 cpu占用率过高 一个多线程程序, 有时候在应该空闲的时候,cpu占用率过高,一般在20%~50%波动。请问如何找出是那个线程导致cpu占用率过高?有没有一般性的技巧或者工具可以找出问题? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 具体操作,你可以在程序在占有CPU50%或者100的时候,暂停调试,看看程序运行到哪里了。 应该是你的线程有空转的现象...你是Wait信号量么?有种可能是,你的线程函数wait到了信号量,但是进去后确什么都没有做...导致程序一直空循环.... 同意楼上实在不行,先在线程里加上Sleep语句,可以有一些好转 俺一般这样处理if( 有事件 ){ 处理}else{ Sleep( 50 );} 用GetThreadTimes取各个线程占用CPU的时间来对比。 提供个思路:抓dump. 用.time看user time用了多少时间,用!runaway看耗时最多的thread是哪几个,~xs(x是thread id)看那个thread卡在哪了. 优化下算法,降低线程优先级。另外,在大循环里用下sleep()可以减少一些CPU占用。 Process Explorer真的很好用,原来是某个别人写的dll占用CPU,与我写的代码没关系。谢谢各位! mfc中PreTranslateMessage调用dlg.Domdal,返回IDOK后出错怎么办 非常简单的问题, MFC 最基本的问题, 就是白送分, 先到先得啊 为什么不能在memdc中GetPixel? 学编成程,还是电子书籍好! 请问如何让用户的输入目录 一个极菜的问题! 如何用SendMessage函数发一个msg之后取得edit控件的内容? 急需帮助,关于串口通讯的的问题。 菜鸟求助 关于MFC的消息发送 I2C通信 SNMP Agent扩展主要步骤,内容及问题 SNMP Agent扩展主要步骤,内容及问题
你是Wait信号量么?
有种可能是,你的线程函数wait到了信号量,
但是进去后确什么都没有做...
导致程序一直空循环....
实在不行,先在线程里加上Sleep语句,可以有一些好转
{
处理
}
else
{
Sleep( 50 );
}
原来是某个别人写的dll占用CPU,
与我写的代码没关系。谢谢各位!