140
技術社區[雲棲]
從PCI上讀取數據 線程和定時器效率
從PCI上讀取數據 線程和定時器效率
線程:
mythread=AfxBeginThread(StartContinuous,(LPVOID)1,THREAD_PRIORITY_NORMAL,0,CREATE_SUSPENDED);
mythread->ResumeThread();
UINT StartContinuous(LPVOID pParam)
{ HWND hWnd=(HWND) pParam;
int len=0;
FILE *fp;
i=0;
while(threadenable)
{
len = CPCI6312_ReadData(buf);
if (len>0)
{
reccnt += len;
fwrite(buf,1,len,fp);
}
}
len = CPCI6312_ReadLastData(buf);
if (len>0)
{
reccnt += len;
fwrite(buf,1,len,fp);
}
fflush(fp);
fclose(fp);
AfxMessageBox("end",MB_OK,NULL);
return 0;
}
計數器方式:
void CDemo2Dlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
if(nIDEvent==1)//更新記錄數據
{
runsec++;
str.Format("record:%d (%d)",reccnt,runsec);
m_list.AddString(str);
}
if (nIDEvent==2)//采集數據
{
len = CPCI6312_ReadData(buf);
if (len>0)
{
reccnt += len;
fwrite(buf,1,len,fp);
}
}
CDialog::OnTimer(nIDEvent);
}
同樣的數據量,線程方式居然占用CPU 80% 以上,而計數器不到30%。
最後更新:2017-04-03 16:48:51
上一篇:
高可用開源方案 Keepalived VS Heartbeat對比
下一篇:
和自己賽跑的人
如何才能成為一名優秀的軟件測試人員
從項目命名看業務架構發展
DataTable綁定到GridView時,RowDataBound事件
Android開發10——Activity的跳轉與傳值_顯示意圖(intent)的應用
ios優秀開源項目收集(不斷更新中....)
積累(三)
2017年數據架構師架構選型必讀
Argo.AI CEO 撰文自述:DARPA 挑戰賽十年,自動駕駛還麵臨哪些挑戰?
物聯網“興奮劑”讓傳感器應用遍地開花
JSP頁麵中出現的一個異常:org.apache.jasper.JasperException: java.lang.NullPointerException