导入
任务简介
本课程介绍了任务(由承诺和未来组成),它们是C++多线程编程中的重要组成部分。
除了线程之外,C++ 还提供了任务来执行异步操作。这些任务需要包含 <future> 头文件,并通过一个工作包进行参数化。每个任务由两个关联的组件构成:一个承诺(promise)和一个未来(future),二者通过一个数据通道相连。承诺负责执行工作包,并将结果放入数据通道;与之对应的未来则从该通道中获取结果。这两个通信端点可以运行在不同的线程中。特别之处在于,未来可以在稍后的时间获取结果,因此承诺计算结果的过程与未来查询结果的过程是相互独立的。
🔑 将任务视为通信端点之间的数据通道
任务的行为类似于通信端点之间的数据通道。数据通道的一端称为承诺(promise),另一端称为未来(future)。这两个端点可以位于同一个线程或不同线程中。承诺将结果放入数据通道,而未来则等待并取出该结果。
在下一课中,我们将讨论 C++ 中用于并发的线程与任务之间的区别。