Skip to Main Content
C++程序设计语言(第4部分:标准库)(原书第4版)
book

C++程序设计语言(第4部分:标准库)(原书第4版)

by 本贾尼 斯特劳斯特鲁普
August 2021
Intermediate to advanced content levelIntermediate to advanced
450 pages
6h 57m
Chinese
Pearson
Content preview from C++程序设计语言(第4部分:标准库)(原书第4版)

42.4 基于任务的并发

到目前为止,本章一直关注运行并发任务的机制:关注点是thread、避免数据竞争和thread同步。对很多并发应用,我发现这种对机制的关注会分散我们对实际任务(原目标,指明了并发任务!)的注意力。本节介绍如何指定一种简单的任务:一种根据给定参数完成一项工作、生成一个结果的任务。

为了支持这种基于任务的并发模型,标准库提供了如下特性:

这些特性的描述暴露了很多细节,而这些细节没有必要烦扰应用程序编写者。请牢记任务模型的根本原则:简单性。大多数更复杂的细节支持的都是很少见的用途,例如隐藏更为麻烦的线程和锁机制。

标准库对任务的支持仅仅是如何支持基于任务的并发的一个例子而已。我们常常希望提供大量小任务,让“系统”操心如何将它们映射到硬件资源去执行以及如何避免它们发生数据竞争、伪唤醒、过度等待,等等。

这些特性的重要性在于它们对程序员而言非常简单。在一个串行程序中,我们通常会编写下面这样的代码:

并行版本变为:

有时,我们在考虑替代方案、细节、性能和权衡时会忽视简单性的价值。我们应优先考虑使用最简单的技术,将更复杂的解决方案留到我们确信真正值得使用的地方。 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

Java并发编程实战

Java并发编程实战

Brian Goetz, Tim Peierls
C++语言导学(原书第2版)

C++语言导学(原书第2版)

本贾尼 斯特劳斯特鲁普
Go程序设计语言

Go程序设计语言

艾伦A. A.多诺万, 布莱恩W. 柯尼汉
可编程网络自动化

可编程网络自动化

Jason Edelman, Scott S. Lowe, Matt Oswalt

Publisher Resources

ISBN: 9787111544395