go的锁

并发操作对数据结果产生影响的本质

image-20240229191635300

cas

正常状态

自旋多次,自旋获取锁失败后进入阻塞状态

锁饥饿

当前协程等待锁的时间超过1ms,切换为饥饿模式

饥饿模式下,不自旋,新来的协程直接sema休眠

被唤醒的协程直接获取锁

没有协程在队列中等待的时候,恢复为正常状态


go的锁
http://example.com/2024/02/29/go的锁/
作者
Forrest
发布于
2024年2月29日
许可协议