作者回复: 赞学习态度,赞作业
作者回复: Mutex和channel实现代码实现非常复杂,第一遍看不懂没关系,第二遍看不懂也没关系......,永远看不懂也不影响你使用它。你可以每次只尝试理解一个知识点。我的经验是多看几遍,每一个if分支都理解它的意思,在纸上画一画state的值的变化
作者回复: 标记是否有“通过unlock唤醒”的waiter在竞争锁
作者回复: 是的。你可以看runtime中的实现https://github.com/golang/go/blob/0a820007e70fdd038950f28254c6269cd9588c02/src/runtime/sema.go#L321
作者回复: 一点建议 一个是多学习并发的知识,充分了解并发的复杂性和场景。 二是实现并发原语的时候,要便利各种可能性
作者回复: 👍🏻
作者回复: 没错,多来几遍,每次都有收获
作者回复: 对,所有的goroutine看到的都是一样的
作者回复: 加油
作者回复: waiter数从第4个bit开始