3

我需要做一些事情(我称之为调度程序),每分钟检查一次系统的时间,如果时间发生变化,假设它是 17:52,下一刻是 17:53,所以它会在 17:53 调用一个函数日志更新

我怎么做这只是我不知道互斥锁和所有人。

谢谢

4

2 回答 2

7

我不确定我是否理解要求,但您的问题是“如何在每 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
  }

}
于 2012-04-09T12:39:14.900 回答
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);
  }
}
于 2013-05-07T11:16:18.013 回答