本章概要
- 理解并发和并行之间的区别
- 讨论为什么并发并不总是更快
- 讨论 CPU 密集型和 IO 密集型工作负载的影响
- 决定何时使用channels 或 mutexes
- 数据竞争和竞争条件之间的区别
- 深入研究 Go 上下文
在过去的几十年中,CPU 供应商以某种方式停止了这场竞赛,只关注时钟速度。相反,现代 CPU 设计为具有多个内核和超线程(同一物理内核上的多个逻辑内核)。因此,为了利用这些架构,并发性对于软件开发人员来说变得至关重要。尽管 Go 提供了简单的原语,但这并不一定意味着编写并发代码变得容易。下一章将侧重于实践,本章将首先介绍与并发相关的基本概念。