GO语言Metex

Mutex互斥锁

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

Mutex正常模式:

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

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

Mutex饥饿模式:

直接加入等待队列FIFO

防止尾端延迟


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

在正常模式下

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

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

相关推荐
语落心生几秒前
Apache Geaflow推理框架Geaflow-infer 解析系列(六)共享内存架构
后端
语落心生3 分钟前
Apache Geaflow推理框架Geaflow-infer 解析系列(七)数据读写流程
后端
语落心生6 分钟前
Apache Geaflow推理框架Geaflow-infer 解析系列(五)环境上下文管理
后端
程序员爱钓鱼8 分钟前
用 Python 批量生成炫酷扫光 GIF 动效
后端·python·trae
封奚泽优10 分钟前
下降算法(Python实现)
开发语言·python·算法
aiopencode21 分钟前
iOS 应用上架的工程实践复盘,从构建交付到审核通过的全流程拆解
后端
笃行客从不躺平33 分钟前
遇到大SQL怎么处理
java·开发语言·数据库·sql
郝学胜-神的一滴33 分钟前
Python中常见的内置类型
开发语言·python·程序人生·个人开发
q***876040 分钟前
Spring Boot 整合 Keycloak
java·spring boot·后端
Billow_lamb41 分钟前
Spring Boot2.x.x全局拦截器
java·spring boot·后端