私は、6分ごとにフラグを送信する必要がある一種の「制御ブロック」で作業しています。問題は、これを行う簡単な方法があるかどうかわからないということです。ただし、ループ内でclock_tを6分に達するまで使用してから、フラグを送信してclock_t変数を再初期化するメソッドを呼び出しました。
何かを説明するのを忘れました。ブロックはフローのように機能するため、スリープはオプションではありません。常に何かを送信する必要があります。実際、フラグは送信するものを変更します
前もって感謝します
私は、6分ごとにフラグを送信する必要がある一種の「制御ブロック」で作業しています。問題は、これを行う簡単な方法があるかどうかわからないということです。ただし、ループ内でclock_tを6分に達するまで使用してから、フラグを送信してclock_t変数を再初期化するメソッドを呼び出しました。
何かを説明するのを忘れました。ブロックはフローのように機能するため、スリープはオプションではありません。常に何かを送信する必要があります。実際、フラグは送信するものを変更します
前もって感謝します
これだけのためにスレッド全体は必要ありません。システム OS の定期的なタイマー コールバックを使用します。
フラグのオンとオフを切り替えるスレッド関数を使用して、一度に 6 分間スリープさせることができます。例えば:
bool flag = false;
int main() {
while(true) {
if (flag == true) {
flag = false;
}
}
return(0);
}
void threadFunc() {
flag = true;
sleep(360); //360 seconds is 6 minutes
}
注: 現在記述されているコードはスレッド セーフではないため、ミューテックスまたはセマフォを使用する必要があります。スレッドの使用方法も、オペレーティング システムによって異なります。もちろん、C++11 を使用しない限り。
スレッドを 6 分間スリープさせてから、フラグを送信するだけです。
for(;;)
{
sendFlag();
sleep(6*60);
}
C++11 の を含むsleep メソッドのオプションを次に示しますstd::this_thread::sleep_for
。