如何在获得其未来价值后重用 boost::promise 对象?
How to reuse boost::promise object after getting its future value?
void sss(boost::promise<std::string>& res)
{
res.set_value("hi");
}
void yyy(boost::promise<std::string>& res)
{
res.set_value("hello");
}
int main()
{
boost::thread th;
boost::promise<std::string> a;
th = boost::thread(sss, boost::ref(a));
th.join();
std::cout << a.get_future().get() << std::endl;
th = boost::thread(yyy, boost::ref(a));
th.join();
std::cout << a.get_future().get() << std::endl;
}`
我收到了承诺已经满足的错误。如何复用同一个promise对象?
将其替换为未使用的承诺:
a = boost::promise<std::string>();
void sss(boost::promise<std::string>& res)
{
res.set_value("hi");
}
void yyy(boost::promise<std::string>& res)
{
res.set_value("hello");
}
int main()
{
boost::thread th;
boost::promise<std::string> a;
th = boost::thread(sss, boost::ref(a));
th.join();
std::cout << a.get_future().get() << std::endl;
th = boost::thread(yyy, boost::ref(a));
th.join();
std::cout << a.get_future().get() << std::endl;
}`
我收到了承诺已经满足的错误。如何复用同一个promise对象?
将其替换为未使用的承诺:
a = boost::promise<std::string>();