多线程导致CPU占有率不稳定,请各位看看
数据采集,波形刷新: 小弟第一次采用多线程技术,我将从板卡获取数据作为后台处理线程,命名为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);//处理数据完毕后唤醒线程
}
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);//处理数据完毕后唤醒线程
}
...全文
相关推荐
DOSIDLE 解决运行vmware的dos虚拟机时CPU占有率100%的问题
dosidle.exe可以解决运行vmware的dos虚拟机时CPU占有率100%的问题,可以使CPU占有率迅速下降。这个是一个.flp文件,插入vmware的软驱,运行dosidle.exe即可。
得到cpu占有得到cpu占有率的API函数
这三项时间信息对于计算CPU占有率非常关键。
易语言取进程CPU占有率源码
**获取CPU使用率的原理** - 通过连续两次获取当前进程的CPU使用时间,然后计算差值,与整个系统的时间间隔相比,可以得到CPU占有率。
易语言取进程CPU占有率源码-易语言
了解进程的CPU占有率可以帮助我们识别出哪些程序可能在消耗过多的计算资源,从而可能导致系统变慢或不稳定。易语言通过调用操作系统API函数可以获取到这些信息。
工作准备wpf动态cpu占有率
**测试与调试** - 在实际环境中,可以通过模拟高CPU负载场景(如运行多线程任务)来验证CPU占有率监控功能的准确性。


进程/线程/DLL
