10 万字 Go 并发编程心得笔记:配 B 站实战讲解视频

如果要面试一个 Go 语言高级程序员,应该问什么,我的答案是并发,并发是 Go 语言设计的灵魂,同时也是高级和初级程序员很好的区分标准。下面这份笔记从 Go 并发概念开始,介绍了 Go 并发模型的理论基础 (Communicating Sequential Processes),以及 Go 标准库 “sync” 包下所有并发原语的使用注意事项和实例代码,并且提供给你很多编写 Go 并发程序的编程模式建议。最后我们将会讨论大规模并发程序编写中应该注意的事项,同时我们将深入的 Golang 运行时(Runtime)如何实现并发的底层细节,深入的理解这些内容,你将有能力编写出大规模,安全,健壮的 Go 并发代码。

以下笔记中一些主题:

  • 摩尔定律
  • 多核时代下并发编程的困惑
  • 为什么编写并发代码很困难
  • 竞争条件
  • 原子性是啥
  • 内存访问同步又是啥
  • 死锁、活锁和饥饿的分析与演示
  • 并发和并行的区别(祖传千年面试题)
  • 什么是 Go 并发编程之魂:CSP
  • Go 并发编程的哲学
  • Goroutine 详解
  • 标准库同步包 “sync” 里面的原语(WaitGroup、Mutex、RWMutex、Cond、Once、Pool)
  • CSP 的核心 Channel 通道,Select 语句
  • Go 并发编程模版(拿过来套用):for-select 循环、防止 Goroutine 泄漏、Or Channel、Goroutine 错误处理、Pipeline 模式、通道扇出,扇入(Fan-Out、Fan-In)、or-done-channel、tee-channel、bridge-channel、队列模式 Queuing、context 包
  • 大规模并发程序的编写法则:错误信息的处理、超时和取消的操作(防止死锁)、心跳、复制请求、对请求限速、修复有问题的 Goroutine。
  • Goroutine 运行时剖析:什么是“Work Stealing”?什么是 GMP?Go 运行时的调度算法。

gitbook 订阅地址:https://gitbook.cn/gitchat/activity/5ee4812142f9cf10afd46a49

 

 


发表评论

电子邮件地址不会被公开。 必填项已用*标注