#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;
}
Według this link, std::future::wait
bloki aż wynikiem staje dostarczony.
Dlaczego nie przyszły :: wait() blokuje
Jednak powyższy kod nie może niczego wydrukować. Oczywiście główny wątek zakończył się przed zakończeniem wątku pms.set_value
.
Dlaczego nie blokuje ftr.wait()
?
chciałbym zaproponować Ci spojrzeć na std :: asynchroniczny – LeDYoM