如何检查std :: future暂挂的状态

时间:2019-10-14 09:47:40

标签: c++ std future

我要检查状态为未决的std :: future

在某些情况下,我想在std :: future'状态待定时启动线程

using namespace std::chrono_literals;

// Create a packaged_task using some task and get its future.
std::packaged_task<void()> task([] {
    std::this_thread::sleep_for(3s);
});

auto future = task.get_future();
if future is pending 
{
    std::thread t(std::move(task));
    t.join(); // Join thread.
}
// Run task on new thread.


// Get thread status using wait_for as before.
auto status = future.wait_for(0ms);

// Print status.
if (status == std::future_status::ready) {
    std::cout << "Thread finished" << std::endl;
}
else
{
    std::cout << "Thread running" << std::endl;
}

0 个答案:

没有答案