- goroutine 与 channel 的含义
- goroutine 其实并不是协程 (Rob Pike 说的)
- 讲并发同步
- 为什么要有channel,讲讲共享内存的问题(数据竞争),这也说明为什么要调度器
- go的并发编程哲学;不要让计算通过共享内存来通讯,而应该让它们通过通讯来共享内存
- channel
- channel 的分类
- channel 接受阻塞
- channel 发送阻塞
- 有缓存、无缓存channel的内部区别
- channel的六种操作,并发安全
- channel 源码分析,简单的三个队列,以及一把互斥锁
- 它是如何解耦的
goroutine 的调度器
特殊的goroutine g0
- M: os thread 也是动态创建,与P的个数没有关系
- G: goroutine 肯定不固定
- P: context for scheduling (调度的上下文,也就是 goroutine运行的环境) (一般是逻辑cpu个数,程序启动就固定了)
- P 的数量等于 GOMAXPROCS
- G M P三者之间的关系
- M 没有 P 怎么办?M怎么取到G?
- 为什么需要全局的队列G
- GMP的交互关系
- 结合讲channel阻塞问题
- goroutine 又产生goroutine,如何管理的问题
- goroutine 的泄漏
- goroutine泄漏是什么&如何发现
- channel操作的正确姿势
- channel的相关操作
- for range
- select case
- wg.WaitGroup
On
2019-04-18
09:43:50