-1

私は、6分ごとにフラグを送信する必要がある一種の「制御ブロック」で作業しています。問題は、これを行う簡単な方法があるかどうかわからないということです。ただし、ループ内でclock_tを6分に達するまで使用してから、フラグを送信してclock_t変数を再初期化するメソッドを呼び出しました。

何かを説明するのを忘れました。ブロックはフローのように機能するため、スリープはオプションではありません。常に何かを送信する必要があります。実際、フラグは送信するものを変更します

前もって感謝します

4

3 に答える 3

1

これだけのためにスレッド全体は必要ありません。システム OS の定期的なタイマー コールバックを使用します。

于 2013-01-11T16:53:40.293 に答える
1

フラグのオンとオフを切り替えるスレッド関数を使用して、一度に 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 を使用しない限り。

于 2013-01-11T16:00:32.847 に答える
1

スレッドを 6 分間スリープさせてから、フラグを送信するだけです。

for(;;)
{
    sendFlag();
    sleep(6*60);
}

C++11 の を含むsleep メソッドのオプションを次に示しますstd::this_thread::sleep_for

于 2013-01-11T15:55:51.243 に答える