Logo
Section 1 / 9

并发编程

本课介绍并发编程的概念。

导入

并发编程

本课介绍并发编程的概念。

简介

并发编程是一个广泛的话题,同时也是 Go 语言中最引人入胜的特性之一。

在许多编程环境中,并发编程之所以困难,是因为实现对共享变量的正确访问需要处理诸多细微之处。而 Go 语言提倡一种不同的方法:通过通道传递共享值,实际上从不主动让多个执行线程共享同一数据。在任意时刻,只有一个 goroutine 能访问该值。

从设计上就杜绝了数据竞争的发生。为了推广这种思维方式,我们将其总结为一句口号:

不要通过共享内存来通信;而应该通过通信来共享内存。

当然,这种方法也不应过度使用。例如,引用计数可能更适合通过在整型变量周围加一个*互斥锁(mutex)*来实现。但作为一种高层设计思路,使用通道来控制数据访问有助于编写出更清晰、更正确的程序。

尽管 Go 的并发模型源自霍尔(Hoare)的通信顺序进程(CSP),但它也可以看作是 Unix 管道的一种类型安全的泛化形式。

  • Rob Pike 的并发编程幻灯片(IO 2012)
  • Rob Pike 在 IO 2012 大会的演讲视频
  • 《并发不等于并行》(Rob Pike)演讲视频

在下一课中,我们将介绍一个有趣的概念——goroutine,请继续阅读!

接口

协程(Goroutines)