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

How to determine whether a std::future has a value?

本文关键字:是否 future std 何确定      更新时间:2023-10-16

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

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

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