在死循环中如何降低cpu使用 因为我在程序中必须写一个while(true){...}的程序,该程序主要是不停的给各个终端发放信息,每一次时间间隔比较短,50ms左右。目前直接循环的话,cpu马上就上100了,在vb里可以加入Doevent来改善,不知在vc里该如何写?谢谢各位了! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 新开个线程,让它去while(TRUE) 送你个VC版的DoEventsvoid DoEvents(){ MSG msg; while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); } return;} 每轮循环中加入_sleep(50) ;不过,不把这个循环放入线程的话,在它结束以前,你的程序的界面对任何操作都是无响就的,包括画界面的消息. 办法很多了,最简单就是开个线程然后sleep(1)复杂的可以用信号量,等待事件等等 呵呵,谢谢楼上的哈,看了就明白了,就是自己不会写啊,看来看sdk还是有点帮助的哈谢了。现在的结果是在任务管理器里,不会说没响应,但是cpu还是100。 我说得楼上是ymbymb(),不好意思,帖子刷的太快,谢谢大家。to QunKangLi(李群康)因为程序本身的要求就不能_sleep(50)了。to kathywp(树欲静而风不止) 你是说没一次循环就开一个线程然后sleep(1)? CEvent nullEventwhile(1){ WaitSingleObject(nullEvent,50);}这样好点,不会影响整个系统. 你先开一个线程,在线程中while( TRUE ){}中加入Sleep( 10 );这样如果不做其它处理,CPU基本不占! to firebolt2002(霹雳) 我在msdn里面没有找到WaitSingleObject,这也是等待50ms? WaitForSingleObject(...) // xixi CEvent event;…………………………WaitForSingleObject(event, 时间);时间可以自己设定。 使用CreateThread,建一个线程来处理死循环 sleep会使整个程序处于等待状态.WaitForSingleObject只影响当前线程 菜鸟求助-关于Edit控件数值范围 如何获取硬件信息 OnInitDialog 后自动失去 焦点 招聘软件工程师(工作地点广州科学城) 剪贴板中的图像数据 用ODBC修改和删除记录语句怎么写啊? 请问怎样用CRecoder对象的m_strFilter实现模糊查询?(ODBC) 如何由DIB句柄得到GDI句柄。 OPENGL:创建FBO老是遇到incomplete read buffer 如何把VS多窗口平铺? MFC DLL可不可以暴露类? 在在word文档中插入一副图片,然后让图片浮在文字上方,怎么做?
void DoEvents()
{
MSG msg;
while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return;
}
不过,不把这个循环放入线程的话,在它结束以前,你的程序的界面对任何操作都是无响就的,包括画界面的消息.
复杂的可以用信号量,等待事件等等
谢了。现在的结果是在任务管理器里,不会说没响应,但是cpu还是100。
}
这样好点,不会影响整个系统.
…………………………
WaitForSingleObject(event, 时间);时间可以自己设定。