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

Pingo520 2017-02-16 02:32:47
比如我有两个任务,第一个任务预定在5点开始执行,第二个任务预定在5点半开始执行,这用什么实现好呢。
我现在的想法是用个死循环,每隔1秒获取系统时间,然后与任务时间比对,如果获取的时间与预定时间相等,
就执行相应的任务。但是感觉这种方式好low。
有没有更好的方式,来几个大神指点下
...全文
488 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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只能这样了,开一个时钟线程

15,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧