mutex锁有几种模式?

提问者:帅平 问题分类:面试刷题
mutex锁有几种模式?
1 个回答
梦回往昔べ情难断
梦回往昔べ情难断
Go的sync.Mutex有两种模式:
1、正常模式(Normal Mode):
新请求锁的goroutine会先尝试直接获取锁。
若锁已被占用,则进入一个FIFO队列等待。
当锁释放时,队头的goroutine会被唤醒,但需要与新到达的goroutine竞争锁(新到达的可能更易获取锁,因为它们已在CPU上运行)。
2、饥饿模式(Starvation Mode):
当某个goroutine等待锁超过1ms时,触发饥饿模式。
锁的所有权会直接移交给队头的goroutine,新到达的goroutine不再竞争,而是直接进入队列尾部。
当队列中最后一个goroutine获取锁,或等待时间小于1ms时,切换回正常模式。
发布于:1个月前 (02-11) IP属地:四川省
我来回答