std::future
是你要找的,这个可以和
std::async
,
std::promise
std::packaged_task
. 一个例子
标准::异步
:
#include <iostream>
#include <string>
#include <future>
#include <thread>
int main()
{
std::future< int > task = std::async(std::launch::async, []{ std::this_thread::sleep_for(std::chrono::seconds(5)); return 5; } );
if (std::future_status::ready != task.wait_for(std::chrono::seconds(4)))
{
std::cout << "timeout\n";
}
else
{
std::cout << "result: " << task.get() << "\n";
}
}
请注意,即使在超时之后,任务仍将继续执行,因此如果要在任务完成之前取消任务,则需要传入某种标志变量。