【发布时间】:2012-06-09 01:17:22
【问题描述】:
是否可以检查std::future 是否已完成?据我所知,唯一的方法是使用零持续时间调用wait_for 并检查状态是否为ready,但有没有更好的方法?
【问题讨论】:
-
@CatPlusPlus 除非我弄错了,
valid只检查未来是否具有共享状态(即它返回true直到get被调用到未来)。 -
那么,如果
get已经被调用并返回了存储的值,你还想要true吗? (我不确定为什么这会有用,因为您只能获得一次值。) -
@JamesMcNellis 也许我误解或滥用期货,但我想知道线程(或执行计算的任何东西)是否完成。基本上相当于Qt的
QFuture::isFinished。 -
超时时间为零的等待是许多平台上的大多数 API 处理此类概念的方式...如此之多,以至于我将其视为处理该概念的“标准”方式。这让我对“更好的方法”这个概念有点疑惑……
-
@asveikau 我不知道这是一种标准做法。当我不想等待时调用等待函数感觉很奇怪。
标签: c++ multithreading c++11 future