go channel 同一时刻不能同时收发吗
我看了go 1.11的channel send 和 recv源码,发现在收发的时候,会先上锁,如果我没有理解错误,
收发都用的是同一把锁,这是不是意味着:通道不能同时收发。即:收与发是互斥的?
我看了go 1.11的channel send 和 recv源码,发现在收发的时候,会先上锁,如果我没有理解错误,
收发都用的是同一把锁,这是不是意味着:通道不能同时收发。即:收与发是互斥的?
2 回答2.7k 阅读✓ 已解决
1 回答2.4k 阅读✓ 已解决
2 回答1.8k 阅读✓ 已解决
1 回答1.3k 阅读✓ 已解决
1 回答1.5k 阅读✓ 已解决
2 回答1.4k 阅读
1 回答1.9k 阅读
是的. 它不能. 它就是一个简单的环形队列。
一个Lock几乎解决了大量了并发问题,也没有CAS 这些操作
为啥这么设计,我觉得go中的chan就是用来简单地通信罢了
没有什么通信是一个chan无法解决的,如果有,那就两个。