2017-05-06 19 views
1

infinite loopを一時停止することなく変数1 Minuteをリセットする必要があるプロジェクトを行っています。例えば無限ループで60秒ごとに変数値をリセットする

int temp = 0; 

while(true){ 

temp ++; 

//After 60 Seconds 
call_to_a_function(temp); 
temp = 0; 

} 

どのように私はC++でこれを達成することができますか?

ご協力いただき誠にありがとうございます。

+0

タイマーはプラットフォームに依存します( 'boost :: chrono'や類似のライブラリを使いたくない場合)。どのプラットフォームにいますか? – nakiya

+0

Windows 10 - Visual Studio 2015 –

答えて

2
atomic_int temp; 

    std::thread t([&temp]() 
        { 

         while(temp!= -1){ 
          std::this_thread::sleep_for(std::chrono::seconds(60)); 
          temp=0; 
         } 
        }); 


    while (true) 
    { 
     temp < INT_MAX ? temp++ : 0; 
     cout << temp << endl; 
    } 
    // do some stuff 
    // when program needs to exit, do this to avoid a crash 

    temp = -1; // t will exit the loop 
    t.join(); // wait until t finishes running 

睡眠とのループが離れて最適化され得るかもしれませんが。

+0

私はちょっと別のものを投稿しました:) – didiz

+0

私は今試しましたが、実行直後に突然プログラムを終了させて​​しまいました。 –

+0

私のために働いて、atomic_intを使いましたか?デバッガのエラーは何ですか? – didiz

関連する問題