如何在获得未来值后重用boost :: promise对象?

时间:2015-01-05 15:05:40

标签: c++ boost

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;
}`

我收到承诺已经满足的错误。如何重用同一个承诺对象?

1 个答案:

答案 0 :(得分:6)

将其替换为未使用的承诺:

a = boost::promise<std::string>();