GO语言Metex

Mutex互斥锁

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

Mutex正常模式:

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

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

Mutex饥饿模式:

直接加入等待队列FIFO

防止尾端延迟


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

在正常模式下

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

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

相关推荐
froginwe111 分钟前
JSON 语法详解
开发语言
XYCMS8 分钟前
PHP 外贸网站标题怎么用英文分割生成带杠号“-”的短网址
开发语言·php
云游云记9 分钟前
php设计模式总结
开发语言·设计模式·php
计算机学姐10 分钟前
基于SpringBoot的自习室座位预定系统【预约选座+日期时间段+协同过滤推荐算法+数据可视化统计】
java·vue.js·spring boot·后端·spring·信息可视化·tomcat
2301_7886624025 分钟前
C++中的代理模式高级应用
开发语言·c++·算法
嫂子开门我是_我哥25 分钟前
第十七节:项目实战1:猜数字游戏(模块化开发实现)
开发语言·python·算法·游戏
啊阿狸不会拉杆27 分钟前
《计算机操作系统》第十二章 - 保护和安全
开发语言·网络·c++·算法·安全·计算机组成原理·计算机操作系统
吴老弟i29 分钟前
Go 多版本管理实战指南
golang·go
Marktowin32 分钟前
控制权限系列之(2)手把手教你使用基于角色的权限控制
后端
多米Domi01138 分钟前
0x3f 第43天 黑马点评全量复习一遍 + 栈两题
开发语言·数据结构·python·算法·leetcode