使用异步的c ++中的后台计时器

时间:2013-02-04 07:27:29

标签: c++ asynchronous atomic

我希望在我的程序后台运行一个计时器,而其他的东西。

我的程序如下:

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”之后,它不会停止导致function1被卡住。

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

其他来源:
c++ background timer (stackoverflow)
is there a way to cancel/detach a future in c++11? (stackoverflow)

0 个答案:

没有答案