如何确定std :: future是否具有值?

nic*_*yte 5 c++ multithreading future c++11

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

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

小智 0

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