1. goroutine 与 channel 的含义
    • goroutine 其实并不是协程 (Rob Pike 说的)
    • 讲并发同步
    • 为什么要有channel,讲讲共享内存的问题(数据竞争),这也说明为什么要调度器
    • go的并发编程哲学;不要让计算通过共享内存来通讯,而应该让它们通过通讯来共享内存
  2. channel
    • channel 的分类
    • channel 接受阻塞
    • channel 发送阻塞
    • 有缓存、无缓存channel的内部区别
    • channel的六种操作,并发安全
    • channel 源码分析,简单的三个队列,以及一把互斥锁
    • 它是如何解耦的
  3. 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
  4. GMP的交互关系
    • 结合讲channel阻塞问题
    • goroutine 又产生goroutine,如何管理的问题
  5. goroutine 的泄漏
    • goroutine泄漏是什么&如何发现
    • channel操作的正确姿势
  6. channel的相关操作
    • for range
    • select case
    • wg.WaitGroup

引用资料