多线程问题

kang3252 2010-04-28 12:54:06
我用CreateThead()创建如下两个线程。问题是CPU一直是100%,如何设计这两个线程比较好?
通过设置优先级可以吗?望高手赐教!
UINT TestProc(LPVOID lpPara)
{
while(true)
{
不断的检测;
}
}
UINT DProc(LPVOID lpPara)
{
while(true)
{
不断的处理;
}
}
...全文
145 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangweiit 2010-04-28
  • 打赏
  • 举报
回复
可以在每个while循环中放置sleep(毫秒数)
一般来说,是检测是否必要执行某操作,不需要就sleep一段时间
尹成 2010-04-28
  • 打赏
  • 举报
回复
先sleep再用事件触发,确保线程中没有空转的循环
bilaopao 2010-04-28
  • 打赏
  • 举报
回复
sleep(500);
byxdaz 2010-04-28
  • 打赏
  • 举报
回复
HANDLE hEventProc = CreateEvent(NULL,FALSE,FALSE,"");
HANDLE hEventTestProc = CreateEvent(NULL,FALSE,FALSE,""););
UINT TestProc(LPVOID lpPara)
{
while(true)
{
if(WaitForsingleObject(hEventTestProc,100)!=WAIT_OBJECT_0)
{
不断的检测;
}
else
{
sleep(500);
}
}
}
UINT DProc(LPVOID lpPara)
{
while(true)
{
不断的处理;
}
}
Eleven 2010-04-28
  • 打赏
  • 举报
回复
线程里最好WaitForsingleObject等待EVENT事件机制,while()死循环太费CPU时间了吧
向立天 2010-04-28
  • 打赏
  • 举报
回复
你的检测和处理通过event控制一下
bragi523 2010-04-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 kang3252 的回复:]
Sleep()?这个时间不好确定。希望这两个线程不要占用这么多CPU,还能这么做?
多线程初学着!
[/Quote]
那你可以用事件触发
总之不能线程中有空转的循环
kang3252 2010-04-28
  • 打赏
  • 举报
回复
Sleep()?这个时间不好确定。希望这两个线程不要占用这么多CPU,还能这么做?
多线程初学着!
shenyi0106 2010-04-28
  • 打赏
  • 举报
回复
你要Sleep一下,否则线程一直运行,你的CPU肯定会全负荷运行的

15,471

社区成员

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

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