Golang sync.Mutex的两种模式

  • 正常模式
    锁竞争不激烈时的模式。
    goroutine在需要获取锁时,会先自旋尝试获取锁,通常尝试4次,自旋结束后还没获取到锁,就进入等待队列。如果goroutine等待时间超过1ms,锁会切换为饥饿模式。
  • 饥饿模式
    锁竞争激烈时的模式。
    goroutine在需要获取锁时,不自旋,而是直接进入等待队列。如果等待队列为空,且等待时间小于1ms,锁会切换回正常模式。
  • 拓展
    sync.Mutex提供TryLock方法。
    调用这个方法会尝试获取锁,但不会阻塞当前goroutine, 成功获取到锁返回true, 没获取成功返回false。

     

posted @ 2025-08-31 19:08  CJTARRR  阅读(8)  评论(0)    收藏  举报