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>

问题是,在使用异步调用函数“计时器”后,它不会停止,这也会导致函数 1 被卡住。

我知道没有选项可以取消线程(还),为此我必须将“原子变量”标志传递给异步任务。有人可以给我举个例子吗?

其他来源:
c++ 后台计时器(stackoverflow)
有没有办法在 c++11 中取消/分离未来?(堆栈溢出)

4

0 回答 0