前面几天看完 Channel 之后,意识到 Channel 在目前版本本质上还是一个加锁的 FIFO 消息队列。不管是对 Channel 进行发送、接收还是关闭操作,都会加锁。由此让我想再重新好好看下目前 Golang 的锁实现,以后分析并发性能的时候能够更加清晰。
左书祺老师的《Go语言设计与实现》 在 【6.2 同步原语与锁】一章中详细介绍了 sync.Mutex 与 sync.RWMut
了解更多