多线程导致CPU占有率不稳定,请各位看看

EckelWei 2011-08-31 01:10:28
数据采集,波形刷新: 小弟第一次采用多线程技术,我将从板卡获取数据作为后台处理线程,命名为EventThread,还创建了一个刷新波形的线程DrawThread,不过使用之后,CPU的占有率不稳定,有时在30%左右,有有时候在10%以下,现贴出代码,请各位看看,问题出在哪里,由于对多线程技术不了解,不足之处请大家指出:
DWORD dwThreadId0=0;
DWORD dwThreadId1 = 1;
hThreadEvent=::CreateThread(NULL,NULL,EventThread,NULL,0,&dwThreadId0);
hThreadDraw=::CreateThread(NULL,NULL,DrawThread,NULL,CREATE_SUSPENDED,&dwThreadId1); //波形刷新的线程暂时挂起
::SetThreadPriority(hThreadEvent,THREAD_PRIORITY_TIME_CRITICAL); //设置线程优先级
::SetThreadPriority(hThreadDraw,THREAD_PRIORITY_TIME_CRITICAL); //设置线程优先级
。。。

static DWORD WINAPI EventThread(LPVOID pVoid)//设置事件监视进程
{
。。。
while(TRUE)
{
if (WAIT_OBJECT_0 == ::WaitForSingleObject(hEvent0,10))
{
pDlg->GetWave(bufRead);//从板卡获取数据
}
}
}

static DWORD WINAPI DrawThread(LPVOID pVoid)
{
while(TRUE)
{
pDlg->DrawWave();
::SuspendThread(hThreadDraw);
::Sleep(10);
}
}

void CScopeDlg::GetWave(WORD Buffer[])
{
。。。//处理数据
。。。
::ResumeThread(hThreadDraw);//处理数据完毕后唤醒线程
}
...全文
269 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
柚子毛驴 2011-08-31
  • 打赏
  • 举报
回复
学习了
ouyh12345 2011-08-31
  • 打赏
  • 举报
回复
cpu有波动是正常的
内存是否泄漏,用工具查比较好
EckelWei 2011-08-31
  • 打赏
  • 举报
回复
大家帮帮忙啊!我在线等哦!
EckelWei 2011-08-31
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 visualeleven 的回复:]
引用 5 楼 eckelwei 的回复:
还有一个现象啊!内存好像也不是很稳定啊!这跟显卡是独显还是集成有关系么

你说的内存不稳定是什么意思?内存一直在增长?
[/Quote]
不是的,有时候开机300多,有时候开机500多,是不停的变化的,我测试过了,运行一天始终在这两个范围内波动,如果一直增长,那可能是内存泄露。现在我已经排除了这种情况了。我的想法是,跟显卡是否是独立显卡有关,这样一来对内存也是有影响的。
Eleven 2011-08-31
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 eckelwei 的回复:]
还有一个现象啊!内存好像也不是很稳定啊!这跟显卡是独显还是集成有关系么
[/Quote]
你说的内存不稳定是什么意思?内存一直在增长?
EckelWei 2011-08-31
  • 打赏
  • 举报
回复
还有一个现象啊!内存好像也不是很稳定啊!这跟显卡是独显还是集成有关系么
EckelWei 2011-08-31
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 gold_water 的回复:]
LZ有什么问题啊,CPU才用了那么点...
[/Quote]

现在CPU使用率不稳定
EckelWei 2011-08-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ouyh12345 的回复:]
cpu不稳定是正常的
多线程嘛,有就干活,没有就休息
[/Quote]
真的如此么?不过EventThread始终在获取数据啊,是一直在“干活”的呀
gold_water 2011-08-31
  • 打赏
  • 举报
回复
LZ有什么问题啊,CPU才用了那么点...
ouyh12345 2011-08-31
  • 打赏
  • 举报
回复
cpu不稳定是正常的
多线程嘛,有就干活,没有就休息

15,471

社区成员

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

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