Hi,
我写了一个服务程式,打算在某个约定时刻才去执行某项任务。
目前代码片段如下:while(1)
{
//Get Current Time
strNow = ...
if( strNow == "08:00:00" )
{
//执行作业
...
...
Sleep(1000); //担心作业太快,重复执行,所以延迟一秒
}
}但是,我发现这种写法,服务占用CPU太高(在任务管理器-进程中查看),而且绝大部分时间在空跑。
指定不能用计划任务实现定时,有什么更好算法?兄弟初次写服务程式,还望高手赐教!谢谢!
我写了一个服务程式,打算在某个约定时刻才去执行某项任务。
目前代码片段如下:while(1)
{
//Get Current Time
strNow = ...
if( strNow == "08:00:00" )
{
//执行作业
...
...
Sleep(1000); //担心作业太快,重复执行,所以延迟一秒
}
}但是,我发现这种写法,服务占用CPU太高(在任务管理器-进程中查看),而且绝大部分时间在空跑。
指定不能用计划任务实现定时,有什么更好算法?兄弟初次写服务程式,还望高手赐教!谢谢!
{
//Get Current Time
strNow = ...
if( strNow == "08:00:00" )
{
//执行作业
...
...
//Sleep(1000); //担心作业太快,重复执行,所以延迟一秒
}
Sleep(1000); //担心作业太快,重复执行,所以延迟一秒}
2.这些核心代码在Service程式中的Service_Start()函数中,用Timer如何实现?
用线程的具体思路如何?
谢谢!
任务管理器中列出的"System Idle"进程,占用CPU 80至98浮动,是否因为应用程式中Sleep()的缘故?
谢谢!
{
//Get Current Time
strNow = ...
if( strNow == "08:00:00" )
{
//执行作业
...
}
else Sleep(100); //消除忙检测,其中100可设为其它合适的值。
}上述方法最简单,且不失性能,开线程和运用其它同步代码都使code复杂化,而性能没有多少提高。