作者回复: 基本正确。Locker是接口,是引用类型,nocopy是结构体,所以直接拷贝值的话,底层锁还是用的同一个,使用上容易出问题。
作者回复: 优势是并发流程上的协同,chan的主要任务是传递数据。另外cond是更低层次的工具,效率更高一些,但是肯定没有chan方便。
作者回复: 如果都用同一个互斥量的话,操作双方就无法独立行事,这就是完全串行的操作了,效率上会大打折扣。
进一步说,本来就是一个发一个收,理应一个用写锁一个用读锁,这样效率高,之后扩展起来也方便。因为读之间不用互斥。
作者回复: 不可以,共享资源总是需要受到保护。
作者回复: 你说的是 recvCond?这可不是收信的意思啊。
作者回复: 你对 demo61.go 有改动吗?
作者回复: 每次执行结束前都会释放,要不其他goroutine没法进入锁保护的临界区。