-1

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

我一直在徘徊的疑问是,长时间的暂停exe是否会按照我们想要的方式工作,还有比我提到的更好的方式吗?

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

4

2 回答 2

2

还有比我提到的更好的方法吗?

是的。

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

将调度部分提取到单独的程序中。你甚至不需要编写这个调度器,因为它已经存在于大多数 操作系统

于 2016-07-26T11:34:01.990 回答
2

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

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

您要做的是自己实现调度程序。如果这是您想要的,那么sleep它是一个 posix 函数,并且chrono::thread::sleep_for是跨平台的,所以最好使用第二个。

但是,通常不建议实现调度器,而且,如此简单的调度器。

于 2016-07-26T11:34:15.980 回答