如何确定 std::future 是否有值
How to determine whether a std::future has a value?
请注意,这与调用valid()
不同。 valid()
指示未来是否具有有效的共享状态,但是我想知道的是是否已为未来设置了值(即通过std::promise::set_value
)。
有一个wait_for
方法,但是我根本不希望调用线程阻塞,我只想检查是否存在值。从理论上讲,我可以调用持续时间为零的wait_for
,但我不知道这是否实际上是执行此操作的首选方法,并且我不确定当以零持续时间调用wait_for
时,预期的行为是什么。
使用 std::future 的目的是能够异步运行任务。因此,只有在需要值时才在将来调用 get(),因为线程阻塞,直到将来准备就绪,然后返回值。
相关文章:
- 在提升multi_index容器中,是否定义了"default index"?
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 检查输入是否不是整数或数字
- 是否可以初始化不可复制类型的成员变量(或基类)
- 在C++中,是否可以基于给定的标识符创建基类的新实例,反之亦然
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 此代码是否违反一个定义规则
- 是否需要删除包含对象的"pair"?
- std::p romise::set_value() 和 std::future::wait() 是否提供内存围栏?
- 标准是否保证在移动std::p ackaged_task后安全使用std::future?
- future::wait() 是否与 async() 执行线程的完成同步?
- 线程是否真的在调用 std::future::get() 后启动
- 是否可以在调用 future.get() 之前销毁 std::p romise ?
- 永远不要从 std::p ackaged_task 中检索 std::future 的结果是否安全?
- 如何确定 std::future 是否有值
- 在 std::future 上多次从多个线程调用 wait() 是否安全
- boost::packaged_task生成的future是否抛出错误的异常
- std::future::wait 应该使用这么多 CPU 吗?是否有性能更高的调用
- boost::future-是否保证wait_callback只被调用一次
- 在std::future::then周围是否有这个方便包装的名称?