GO语言Metex

Mutex互斥锁

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

Mutex正常模式:

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

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

Mutex饥饿模式:

直接加入等待队列FIFO

防止尾端延迟


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

在正常模式下

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

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

相关推荐
悠闲蜗牛�3 分钟前
深入浅出Spring Boot 3.x:新特性全解析与实战指南
开发语言·python
xinhuanjieyi13 分钟前
python获取租房70页信息,为了安全隐去了真实网址
开发语言·python
yhyyht18 分钟前
Apache Camel 框架入门记录(二)
后端
paterWang21 分钟前
基于SpringBoot+Vue的鞋类商品购物商城系统的设计与实现
vue.js·spring boot·后端
paterWang21 分钟前
基于SpringBoot的商铺共享点评系统的设计与实现
spring boot·后端
嘻哈baby25 分钟前
Tomcat 与 Nginx、Apache 的区别是什么?
后端
csbysj20201 小时前
Vue3 模板语法
开发语言
柒.梧.1 小时前
零基础吃透Java核心基础:JDK/JRE/JVM全解析+跨平台原理
java·开发语言·jvm
祈安_1 小时前
深入理解指针(七)
c语言·后端