Go 运行时中的 Mutex

鸟窝 at 
我在极客时间上开了一门面向中高级 Go 程序员的课程:Go 并发编程实战课,有读者问 Go channel 中的实现中使用了 mutex,这个 mutex 和标准库中的 Mutex 有什么不同?正好在百度厂内分享 Go 相关课程中有同事也提出了相同的问题,所以我专门写一篇文章介绍一下。sync.Mutex 是一个 high level 的同步原语,是为广大的 Go 开发者开发应用程序提供的一种数据结构,现在它的内部实现逻辑比较复杂了,包含 spin 和饥饿处理等逻辑,它底层使用了运行时的 low level 的一些函数和 atomic 的一些方法。而运行时中的 mutex 是为运行时内部使用互……