是什么给了 std::future 一些共享状态

Rae*_*ald 3 c++ future

Astd::future有一个std::future::valid方法,指示 future 对象是否引用某些共享状态。没有一个构造函数构造引用共享状态的 future 对象(移动构造函数除外,它可以将共享状态从一个 future 对象移动到另一个)。类的所有get方法 ( 、waitwait_for和 )wait_until都要求未来对象具有共享状态作为前提条件(如果 则它们具有未定义的行为valid() == false)。那么 a 如何才能std::future获取某些共享状态并变得有用呢?

Rae*_*ald 5

您通常不会std::future单独使用 a;你将它与std::promise. 构造std::promise 函数设置了一些共享状态。然后,您可以使用该std::promise::get_future()方法来获取std::future引用该共享状态的 a 。

  • [`std::async`](http://en.cppreference.com/w/cpp/thread/async) 和 [`std::packaged_task`](http://en.cppreference.com/w/cpp /thread/packaged_task) 也创建 futures (3认同)