他のことをしている間、プログラムのバックグラウンドでタイマーを実行したい。
私のプログラムは次のようになります。
void timer(int number)
{
std::this_thread::sleep_for(std::chrono::seconds(number));
std::cout << "executing someFunction()";
}
int function1()
{
int number = 3;
auto future = std::async(timer, number)
int choice;
std::cout << "please enter a number: ";
std::cin >> choice;
while (choice != 0)
{
std::cout << choice << std::endl;
std::cout << "please enter a number: ";
std::cin >> choice;
}
return 1;
}
int main()
{
int num_rows = function1();
}
ヘッダーは次のとおりです。
#include <iostream>
#include <chrono>
#include <future>
問題は、非同期で関数 "timer"を呼び出した後、関数1もスタックする原因となる停止しないことです。
スレッドを(まだ)キャンセルするオプションがないことを理解しました。そのためには、「アトミック変数」フラグを非同期タスクに渡す必要があります。誰かが私に例を見せてもらえますか?
他のソース:
c ++バックグラウンドタイマー(stackoverflow)
c ++ 11でフューチャーをキャンセル/デタッチする方法はありますか?(スタックオーバーフロー)