首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

问个有关问题,关于程序执行cpu占用100%的有关问题*

2012-02-16 
问个问题,关于程序执行cpu占用100%的问题******打个比方:我点击一个按钮执行一段程序。这段程序,是读取一个

问个问题,关于程序执行cpu占用100%的问题******
打个比方:
我点击一个按钮执行一段程序。
这段程序,是读取一个文件夹下的所有文件,并把内容依次导入数据库。。为了这个程序cpu不占很好。因此我起了一个线程执行。

UINT pRunExcelThread (void* p)
{
  while (没读完)
  {
  1循环读取文件。
  2处理一个文件。
  while (文件内容没结束)
  {
  3读取一行,分析数据
  4ExecuteTxnRecord 保存数据库,调用存储过程。
  5读下一行
  }
  }

}
但是我调试的时候,发现4这里cpu利用率100%。
也就是

BOOL CADOConnection::ExecuteTxnRecord (int p_iMerID, CString p_paDevNum)
{
if (m_Con == NULL)
return FALSE;
try
{
m_cmmd->CommandText=_bstr_t(_T("proce_DataImport_ImportData")); //SP Name
m_cmmd->Parameters->Refresh();
m_cmmd->Parameters->Item[_variant_t(_bstr_t("@merchid") )]->Value = _variant_t((long)(p_iMerID));  
m_cmmd->Parameters->Item[_variant_t(_bstr_t("@devnum") )]->Value=_variant_t(p_paDevNum);
m_cmmd->Execute (NULL, NULL, adCmdStoredProc);
}
catch (_com_error *e)
{
AfxMessageBox (e->ErrorMessage ());
return FALSE;
}
return TRUE;
}

请问怎么样才能降低cpu负担,,难道再起一个线程吗?

[解决办法]
正常读取数据库不会导致cpu使用率100%
你可以在while的最后面,5的后面最后
加个Sleep(1);停顿下
[解决办法]
ls说的对
适当的把控制权主动交出给系统

[解决办法]
while中sleep一下

热点排行