void
set_string(std::promise<std::string>& p)
{
p.set_value("set from thread");
}
int
main()
{
std::promise<std::string> p;
std::future<std::string> f = p.get_future();
std::thread t(&set_string, std::ref(p));
std::cout << f.get() << std::endl;
t.join();
}
Warum muss ich t.join()
anrufen, nachdem ich f.get()
anrufen? Ich dachte, dass f.get()
den Haupt-Thread blockieren wird, bis es das Ergebnis erhalten kann, und das würde bedeuten, dass der Thread bereits beendet ist.Warum muss ich einem Thread beitreten, auch wenn ich std :: future :: get verwende?