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 に答える