#include <iostream>
#include <string>
#include <thread>
#include <future>
int main()
{
auto pms = std::promise<std::string>();
auto ftr = pms.get_future();
std::thread([&](){pms.set_value("hello world");});
ftr.wait();
std::cout << ftr.get() << std::endl;
return 0;
}
根據this link,std::future::wait
阻塞,直到結果變得可用。
爲什麼沒有未來::等待()塊
但是,上面的代碼不能打印任何東西。顯然主線程在完成pms.set_value
的線程之前已經完成。
爲什麼ftr.wait()
阻止?
我建議你看一看的std ::異步 – LeDYoM