我想在线程里边做个监听,但是发现CPU占用很高

yswlqj 2009-10-16 03:56:08
我就是想开一个线程监听一个状态,当状态置1时就调用销毁函数,我是这样写的

DWORD WINAPI CTestDlg::ThreadDes(LPVOID pParam)
{
CTestDlg*pThis = (CTestDlg*)pParam;
if(NULL == pThis)
return 0;
while( 1 )
{
if( pThis->m_bIfDestroy )
{
pThis->DestroyWin();
pThis->m_bIfDestroy = FALSE;
}
}
}

是不是不能用while(1)啊,可是我看别人的程序也都用的while都没事的。请大家帮忙,说一下应该如何做一个监听的线程。
...全文
126 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
fnsunbin 2009-11-21
  • 打赏
  • 举报
回复
当然有更好的方法。那就是利用CreateWaitableTimerA()SetWaitableTimer()MsgWaitForMultipleObjects(),做个高精度等待模块。一则不影响鼠标、键盘等其它事件的响应,二则精度提高了1000倍,达到微秒级,三则对cpu占用极少。
yswlqj 2009-10-16
  • 打赏
  • 举报
回复
额,解决了,多谢了
muzizongheng 2009-10-16
  • 打赏
  • 举报
回复
加上 sleep(1);

15,466

社区成员

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

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