什么是长时间暂停exe的最佳方法

时间:2016-07-26 11:16:54

标签: c++ sleep thread-sleep sleep-mode

我用c ++编写了一个用于更改系统密码的程序,我想每2小时运行一次,然后我最终选择c ++中的两个,一个是Sleep(ms),另一个是最近使用的线程lib this_thread::sleep_for(2h)[ 2h using std::chrono_literals]

我一直在徘徊的疑问是,长期暂停exe是否会以我们想要的方式运作,是否还有比我提到的更好的方式?

我还计划将exe作为Windows服务。

2 个答案:

答案 0 :(得分:2)

  

除了我提到的任何其他更好的方式吗?

我建议你不要暂停程序。简单地做,然后退出。

将计划部分提取到单独的程序。您甚至不需要编写此调度程序,因为它已存在于most operating systems上。

答案 1 :(得分:2)

如果你有一些必须定期运行并且需要长时间等待的任务,你应该使用执行任务和退出的程序或脚本,以及处理等待的调度程序。还有你需要考虑的问题,例如:

  • 如果错过了预定的时间(例如,由于重新启动),您是否需要开始执行任务
  • 如果完成所需的时间超过等待时间,您是否允许一次运行多个任务

您尝试做的是自己实施调度程序。如果这是您想要的,那么sleep是posix函数,而chrono::thread::sleep_for是跨平台的,所以使用第二个函数会更好。

但是,通常不建议实施调度程序,而且这些调度程序非常简单。