【问题标题】:How to determine whether a std::future has a value? [duplicate]如何确定 std::future 是否有值? [复制]
【发布时间】:2015-04-01 00:51:57
【问题描述】:

请注意,这与调用 valid() 不同。 valid() 表示未来是否有一个有效的共享状态,但是我想知道是否已经设置了未来的值(即通过std::promise::set_value)。

有一个wait_for 方法,但是我根本不希望调用线程阻塞,我只想检查一个值是否存在。从理论上讲,我可以以零持续时间调用wait_for,但我不知道这是否实际上是这样做的首选方式,并且我不确定当以零持续时间调用wait_for 时预期的行为是什么。

【问题讨论】:

标签: c++ multithreading c++11 future


【解决方案1】:

使用 std::future 的目的是能够异步运行任务。因此,只有在您需要该值时才在未来调用 get(),因为 线程阻塞,直到 future 准备好,然后返回值。

【讨论】:

  • 我认为这并不总是正确的,当您处于“最终一致性”场景中时呢?您可能并不总是想阻止未来。
  • 你可以等待一个超时的未来
猜你喜欢
  • 1970-01-01
  • 2010-10-27
  • 1970-01-01
  • 2014-10-06
  • 1970-01-01
  • 2012-09-27
  • 1970-01-01
  • 1970-01-01
  • 2014-05-04
相关资源
最近更新 更多