您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> VC/MFC >> 我用多线程来定时,在线程调用函数中循环取得当前时间,检查是否为设定的时间,这样做非常占用CPU资源的,该怎样做好呢?参见贴内代码。

我用多线程来定时,在线程调用函数中循环取得当前时间,检查是否为设定的时间,这样做非常占用CPU资源的,该怎样做好呢?参见贴内代码。

来源:网络整理     时间:2016/8/18 8:17:55     关键词:

关于网友提出的“ 我用多线程来定时,在线程调用函数中循环取得当前时间,检查是否为设定的时间,这样做非常占用CPU资源的,该怎样做好呢?参见贴内代码。”问题疑问,本网通过在网上对“ 我用多线程来定时,在线程调用函数中循环取得当前时间,检查是否为设定的时间,这样做非常占用CPU资源的,该怎样做好呢?参见贴内代码。”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 我用多线程来定时,在线程调用函数中循环取得当前时间,检查是否为设定的时间,这样做非常占用CPU资源的,该怎样做好呢?参见贴内代码。
描述:

我用多线程来定时,在线程调用函数中循环取得当前时间,检查是否为设定的时间,这样做非常占用CPU资源的,该怎样做好呢?参见贴内代码。
UINT  ThreadFunc1(LPVOID lpParam)
{
threadInfo* pT=(threadInfo*)lpParam;
CTime gt;
int hh,mm,ss;
m_bRun=TRUE;
while(m_bRun){
gt=CTime::GetCurrentTime();
hh=gt.GetHour();
mm=gt.GetMinute();
ss=gt.GetSecond();
if((Info.iH==hh)&&(Info.iM==mm)&&(Info.iS==ss))
m_bRun=FALSE;
}
AfxMessageBox("时间到了!");
}


解决方案1:

先检查小时
if(Info.iH!=hh) 可以等1分钟在检查
小时不同,则不检查info.iM
依次类推.

解决方案2:

既然是在独立的线程中使用定时器,推荐使用WaitableTimer,定时精度很高。

解决方案3:

精确到秒就使用1000毫秒为单位.

解决方案4:

使用TimeSetEvent/timeKillEvent

解决方案5:

加了Sleep就可以了,CPU是其它线程占用的。

解决方案6:

使用Sleep函数,暂停1000MS来执行程序,而且使用Sleep时是将内核切换出去的,使用WaitForSingleObject的话浪费CPU时间

解决方案7:

稍微Sleep一下


以上介绍了“ 我用多线程来定时,在线程调用函数中循环取得当前时间,检查是否为设定的时间,这样做非常占用CPU资源的,该怎样做好呢?参见贴内代码。”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3363260.html

相关图片

相关文章