2

他のことをしている間、プログラムのバックグラウンドでタイマーを実行したい。

私のプログラムは次のようになります。

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でフューチャーをキャンセル/デタッチする方法はありますか?(スタックオーバーフロー)

4

0 に答える 0