1、std::promise 和 std::future
future 和 promise 的作用是在不同线程之间传递数据,而且支持泛型的操作,使用起来更加方便。
使用 future 和 promise 在线程之间获取数据的机制又是什么呢?
假设线程 1 需要线程 2 的数据,则:
线程 1 初始化一个 promise 对象和一个 future 对象,promise 传递给线程2,相当于线程 2 对线程 1 的一个承诺;future 相当于一个接受一个承诺,用来获取未来线程 2 传递的值;
线程 2 获取到 promise 后,需要对这个 promise 传递有关的数据,之后线程 1 的 future 就可以获取数据了。
如果线程 1 想要获取数据,而线程 2 未给出数据,则线程 1 阻塞,直到线程 2 的数据到达
#include <iostream>