问个问题,关于程序执行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一下