跳到主要内容

课程介绍

课程大纲

并发并行概念

并发(Concurrency)是独立的两个或多个任务,可以在重叠的时间范围内处理。并行(Parallelism)则是在同一时间处理两个或多个任务。

例如:在普通的餐厅中,服务员(单一线程)可以同时处理多个桌子(任务),这就是并发;而在自助餐厅中,每个人(线程)都在自己的速度上取菜、支付,这就是并行。

基本原语

Go 语言并发编程的基本原语,包括 goroutine 和 channels。goroutine 是 Go 语言中的轻量级线程,而 channels 则可以用来在 goroutines 之间进行数据共享和同步。

通过简单的示例代码来讲解如何启动 goroutine,以及如何使用 channels 进行数据传递。

channel 设计模式

  • Unbuffered Channel(非缓冲型)和 Buffered Channel(缓冲型)
  • Close Channel 和 Range Over Channels
  • Select 和 Default
  • Pipeline pattern(管道模式)
  • Fan-out, Fan-in pattern(扩散和收束模式)

实战

通过一个复杂的实际问题来演示 Go 语言的并发特性。例如,设计一个 Web 爬虫项目,展示如何使用 goroutines 和 channels 来提高网络 IO 操作的效率。

并发陷阱

讲解一些常见的并发编程陷阱,例如数据竞争,死锁,资源泄漏等,并展示如何避免这些问题。这部分应该强调在编写并发代码时的最佳实践。

库源码分析

选取 Go 标准库中的一些关于并发的源代码进行分析,例如 sync.Mutex,sync.WaitGroup,或者是 channel 的实现。通过分析源代码,学生可以更深入地理解 Go 的并发机制。

K8S中的源码

真实项目中如何使用并发,有什么需要注意的。

课程周期

课程2周时间,20节课