怎么在预定的时间执行某个线程任务

Pingo520 软件工程师  2017-02-16 02:32:47
比如我有两个任务,第一个任务预定在5点开始执行,第二个任务预定在5点半开始执行,这用什么实现好呢。
我现在的想法是用个死循环,每隔1秒获取系统时间,然后与任务时间比对,如果获取的时间与预定时间相等,
就执行相应的任务。但是感觉这种方式好low。
有没有更好的方式,来几个大神指点下
...全文
370 点赞 收藏 10
写回复
10 条回复
Pingo520 2017年02月17日
引用 9 楼 a393062456 的回复:
[quote=引用 7 楼 Saleayas 的回复:] 使用 WaitableTimer 试试。 MSDN CreateWaitableTimer
看了下,我要用到的可能是绝对时间定时器,但是看了绝对时间设置,怎么设置成每一天的特定时间啊。MSDN和网上只有设置某一天的某个时刻,也就是说只能运行一次,而我是要每天的那个时刻都运行一次。这个时间怎么设置[/quote] 解决了,我只想到CreateWaitableTimer了,忘记SetWaitableTimer可以设置调用间隔了。
回复 点赞
Pingo520 2017年02月17日
引用 7 楼 Saleayas 的回复:
使用 WaitableTimer 试试。 MSDN CreateWaitableTimer
看了下,我要用到的可能是绝对时间定时器,但是看了绝对时间设置,怎么设置成每一天的特定时间啊。MSDN和网上只有设置某一天的某个时刻,也就是说只能运行一次,而我是要每天的那个时刻都运行一次。这个时间怎么设置
回复 点赞
Pingo520 2017年02月17日
引用 7 楼 Saleayas 的回复:
使用 WaitableTimer 试试。 MSDN CreateWaitableTimer
我去看看
回复 点赞
Saleayas 2017年02月16日
使用 WaitableTimer 试试。 MSDN CreateWaitableTimer
回复 点赞
worldy 2017年02月16日
引用 5 楼 a393062456 的回复:
[quote=引用 4 楼 worldy 的回复:] 创建一个任务线程,线程函数的代码可以这样实现
while(bRunning)
{
if(gettime()==17:00:00)//伪代码
doTask();

sleep(1000);//关键,否则会占用CPU
}
我也是这么个意思,循环检测时间,时间到的时候,开个线程执行任务。[/quote] 先创建监视线程,运行循环监视。放在主线程会造成主线程挂起
回复 点赞
Pingo520 2017年02月16日
引用 4 楼 worldy 的回复:
创建一个任务线程,线程函数的代码可以这样实现
while(bRunning)
{
if(gettime()==17:00:00)//伪代码
doTask();

sleep(1000);//关键,否则会占用CPU
}
我也是这么个意思,循环检测时间,时间到的时候,开个线程执行任务。
回复 点赞
worldy 2017年02月16日
创建一个任务线程,线程函数的代码可以这样实现
while(bRunning)
{
if(gettime()==17:00:00)//伪代码
doTask();

sleep(1000);//关键,否则会占用CPU
}
回复 点赞
Pingo520 2017年02月16日
引用 2 楼 shenyi0106 的回复:
windows里面有计划任务,可以写一个程序,绑定到你的计划任务,设定时间,然后交给windows就行了
我这里的情况是这样的,有多个设备,每个设备都有自己的自动采集时间,到了相应的采集时间的时候,我就要给相应的设备发采集指令,如果用计划任务的话,不大好实现我这个啊,而且这个自动采集时间用户是可以自己设置的。
回复 点赞
shenyi0106 2017年02月16日
windows里面有计划任务,可以写一个程序,绑定到你的计划任务,设定时间,然后交给windows就行了
回复 点赞
Windows只能这样了,开一个时钟线程
回复 点赞
发动态
发帖子
进程/线程/DLL
创建于2007-09-28

6376

社区成员

4.9w+

社区内容

VC/MFC 进程/线程/DLL
社区公告
暂无公告