GO语言Metex

Mutex互斥锁

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

Mutex正常模式:

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

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

Mutex饥饿模式:

直接加入等待队列FIFO

防止尾端延迟


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

在正常模式下

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

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

相关推荐
等风来_shy18 分钟前
如何写好一个 Skill
后端
@小码农24 分钟前
2026年3月Scratch图形化编程等级考试一级真题试卷
开发语言·数据结构·c++·算法
这儿有一堆花25 分钟前
住宅代理(Residential Proxy)技术指南
开发语言·数据库·php
一只大袋鼠37 分钟前
Java进阶:CGLIB动态代理解析
java·开发语言
秦ぅ时38 分钟前
保姆级教程|OpenAI tts-1-hd模型调用全流程(Python+curl+懒人用法)
开发语言·python
ailab43 分钟前
研发人员如何写好 AI 提示词:从“问问题”到“驱动研发闭环”
后端
Eiceblue1 小时前
使用 C# 将 Excel 转换为 Markdown 表格(含批量转换示例)
开发语言·c#·excel
爱滑雪的码农1 小时前
Java基础十三:Java中的继承、重写(Override)与重载(Overload)详解
java·开发语言
ltl1 小时前
【大模型基础设施工程】25:大模型基础设施未来
后端
Java面试题总结1 小时前
使用 Python 设置 Excel 数据验证
开发语言·python·excel