在 Go 语言的广袤世界里,并发不仅仅是一个高级特性,更是其灵魂所在。本课程《并发(Goroutines)与通信(Channels)》由宁哥主讲,旨在帮助学习者彻底掌握 Go 并发编程的核心范式。不同于其他语言通过复杂的线程管理与锁机制来实现并行,Go 提供了更简洁、更强大的 CSP(通信顺序进程)模型。本课程将带你从基础概念出发,逐步深入实战,最终能够独立构建高并发的网络服务和数据处理系统。

课程开篇首先夯实了 Goroutine 的基础知识。你会了解到,Goroutine 是 Go 运行时管理的轻量级线程,它的创建成本极低,使得我们可以在同一地址空间中轻松运行数千甚至数万个并发任务。为了让你直观感受其威力,宁哥设计了两个经典的入门实战案例:网络时钟服务器和 Echo 服务器。在网络时钟案例中,你将学习如何让服务器同时响应多个客户端的时间请求,而不必为每个连接单独启动一个重量级进程。Echo 服务器则进一步展示了如何在并发环境下回显客户端发送的数据,这两个案例清晰地揭示了并发编程在处理 I/O 密集型任务时的巨大优势。

随着对并发有了初步认识,课程进入了核心的通信机制——Channels(通道)的学习。Go philosophy 强调:“不要通过共享内存来通信,而要通过通信来共享内存。”这一理念贯穿了 Channels 的全套讲解。你将从无缓存 Channel 开始,理解 goroutine 之间如何通过阻塞机制进行同步。接着,课程深入探讨了串联 Channel 的技巧,这是构建复杂流水线处理逻辑的关键。随后,宁哥演示了如何将并发逻辑封装为独立的函数,提升代码的可读性与复用性。对于实际工程中常见的性能优化场景,带缓存的 Channel 也是必讲内容,它允许我们在不阻塞生产者的情况下暂存数据,从而实现更高效的吞吐。

课程的后半部分聚焦于大型项目实战,这是将理论知识转化为工程能力的关键环节。首先,你将以图像生成缩略图为背景,学习如何并发处理大规模文件 I/O 任务。通过拆分任务并利用 Channel 收集结果,你可以显著缩短图片处理的总耗时。更具挑战性的是并发的 Web 爬虫项目,该项目分三个阶段展开:第一阶段构建基础爬虫框架;第二阶段引入并发机制,大幅提升页面抓取速度;第三阶段则进一步完善爬虫的健壮性与去重逻辑。通过这些层层递进的实战,你将学会如何处理死锁、优雅退出以及如何管理协程生命周期。

结束本课时,你不仅掌握了 Goroutine 和 Channels 的语法细节,更建立起了一套完整的并发思维模型。无论是构建高性能的网络服务,还是处理海量数据的批作业,Go 的并发原语都将是你最锋利的工具。准备好迎接并发编程的挑战,开启你的 Go 进阶之旅吧。

课程目录

课程目录13 集
  • 1 Goroutines基础 (13:59).mp4
  • 2 实战案例:可以同时处理多个客户端的网络时钟 (17:27).mp4
  • 3 实战案例:同时响应多长请求的Echo服务器 (10:53).mp4
  • 4 Channels简介 (11:04).mp4
  • 5 无缓存的Channels (13:57).mp4
  • 6 串联的Channels (04:07).mp4
  • 7 将Goroutine拆分成函数 (07:17).mp4
  • 8 带缓存的Channels (14:07).mp4
  • 9 项目实战:用并发的方式为图像生成缩略图(1) (21:46).mp4
  • 10 项目实战:用并发的方式为图像生成缩略图(2) (25:37).mp4
  • 11 项目实战:并发的Web爬虫(1) (24:27).mp4
  • 12 项目实战:并发的Web爬虫(2) (07:55).mp4
  • 13 项目实战:并发的Web爬虫(3) (08:12).mp4