01 | Mutex:如何解决资源并发访问问题?
02 | Mutex:庖丁解牛看实现
05| RWMutex:读写锁的实现原理及避坑指南
作者回复: 那借这个问题解答一下吧。编译的时候不能发现data race,但是编译的时候可以开启race参数,这样编译后的程序在运行时就可以data race问题了。你看到很仔细,希望这个解答能把这段解释清楚。
另外,绝对不要把带race参数编译的程序部署到线上。
作者回复: 你居然“剧透”第五讲的内容������
作者回复: 说来话长。
1.mutex保护的临界区。如果读的时候不加锁,可能会造成不一致的后果,比如部分变量被修改了。
2.如果临界区比较简单,比如一个int64读写,也可能在一些cpu架构下有可见性问题,导致别的goroutine对变量的写读goroutine看不到
作者回复: 进入自旋不一定会获取到锁。
饥饿模式不一定改变,看文章。只有等待时间小于阈值或者无等待者时才会改变模式
作者回复: 否则获取的时候可能不能得到刚增加的值
作者回复: 明天一讲剖析mutex
作者回复: 一直尝试做获取锁,而不是让渡cpu给其他goroutine
作者回复: 对
作者回复: 不清楚你说的那个代码?不是最终的值肯定是对计数值的更新有并发问题