繁体   English   中英

在设置值之前是否必须调用promise.get_future()?

[英]Does promise.get_future() have to be called before setting a value?

来自http://www.cplusplus.com/reference/future/promise/get_future/

在调用此函数之后,承诺将在某些时候使其共享状态准备就绪[...]

我不确定这是否暗示这个操作顺序是强制性的:

  1. get_future()
  2. 设定值()

只有在设定了价值之后,是否还可以从承诺中获得未来?

据我所知,没有这样的限制。 std::promise::set_value导致错误时,只有两种情况是:

  1. Promise对象没有共享状态(当移动promise对象时可能会发生这种情况):

     promise<int> p; auto p2 = std::move(p); p.set_value(42); // error 
  2. 共享状态已存储值或异常:

     promise<int> p; p.set_value(0); p.set_value(42); // error 

    要么

     promise<int> p; try { throw std::runtime_error("Some error"); } catch(...) { p.set_exception(std::current_exception()); p.set_value(42); // error } 

但是之前调用get_future没有限制。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM