Golang 的管道(chan)无论是否有缓冲, 生产者和消费者不可能做到速度完全匹配, 一旦管道满了, 就相当于生产者直接调用消费者. 如果生产者和消费者使用同一个锁, 就是死锁了.
所以, 一个重要的原则就是, 在写管道之前, 把所有可能的锁 unlock 掉.
Golang 的管道(chan)无论是否有缓冲, 生产者和消费者不可能做到速度完全匹配, 一旦管道满了, 就相当于生产者直接调用消费者. 如果生产者和消费者使用同一个锁, 就是死锁了.
所以, 一个重要的原则就是, 在写管道之前, 把所有可能的锁 unlock 掉.