从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