如何在每1分钟后用c ++执行特定代码

时间:2012-04-09 12:25:25

标签: c++ scheduled-tasks

我需要制作一些东西(我称之为调度程序),每分钟检查系统的时间,如果时间已经改变,假设它是17:52,下一刻是17:53,而在17:53调用函数logupdated

我如何做到这一点,我不知道互斥锁和所有。

谢谢

2 个答案:

答案 0 :(得分:6)

我不确定我是否理解这些要求,但你的问题是" 如何在每1分钟后用c ++执行特定代码",所以,在c ++中11你可以这样做:

#include <thread>
#include <chrono>

int main() {

  while (true) {
    std::this_thread::sleep_for(std::chrono::seconds(60));
    // call your c++ code
  }

}

答案 1 :(得分:3)

如果您希望任务的执行独立于主程序流,请考虑多线程。

C中的这个例子也适用于C ++ 请注意,有些人认为我过度使用指针,我同意,特别是多线程,它可能导致不安全的线程,因此数据损坏甚至更糟糕的是,分段错误。 但是,就我所知,这是将参数传递给线程的唯一方法。

#include <pthread.h>
int main(int argc, char *argv[]) {
  pthread_t thread1;
  int variables=10;
  pthread_create( &thread1, NULL, scheduler, (void*)&variables);
  while(1){
    .... do stuff as main program.
  }
  return 0;
}

void *scheduler (void* variables) {
  int vars;
  int* p_vars = (int*) variables;
  vars = *p_vars;
  while (1){
    .. do scheduler stuff
    sleep (vars);
  }
}