GO语言Metex

Mutex互斥锁

Go 复制代码
type Mutex struct{
    state int32 // 0表示未加锁 1表示加锁,原子操作
    sema uint32 // 信号量,用作等待队列
}

Mutex正常模式:

尝试加锁的G会先自旋几次,若获不到锁,则加入等待队列. 正常模式下,自选和等待队列的一起竞争

因为G频繁的挂起和唤醒会导致开销,为了高吞吐

Mutex饥饿模式:

直接加入等待队列FIFO

防止尾端延迟


前面其他位表示多少个等待者

在正常模式下

自旋的条件,当单核下自旋没意义,或者只有一个P时自旋也没意义.

在多核下,,且至少有一个其他的P在running,且当前P的本地队列为空才可以自旋转.

相关推荐
脚本自动化开发11 小时前
折叠双屏MU156LA:写稿修图游戏体验
后端
脚本自动化开发11 小时前
AI短剧800集讲规矩,观众忘了是AI
后端
Csvn13 小时前
安装、升级与目录结构
后端·nginx
皮皮林55113 小时前
万能通用!权限系统就该这么设计
后端
GoAI15 小时前
DeepSeek Harness Memory (一)主流记忆插件总结
后端·算法·面试
czq_268671948715 小时前
Python打卡第46天
开发语言·python
橙子家15 小时前
RESTful 接口:它并非标准或协议,而是一种【架构风格】
后端
小兔子16 小时前
dict.get 的默认值每次都会求值,哪怕键本来就在
后端
斯维赤16 小时前
限流、熔断、降级,你真的分得清吗?
java·后端·架构
肌肉娃子16 小时前
红队攻防测试报告 — wechat-e.cfd
后端