数据采集,波形刷新: 小弟第一次采用多线程技术,我将从板卡获取数据作为后台处理线程,命名为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);//处理数据完毕后唤醒线程