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

LLiuJJ · · 1065 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

如果要面试一个 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

 

 


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1065 次点击  ∙  1 赞  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传