当前位置: 首页 > news >正文

武汉肥猫科技商城网站建设一个完整的营销策划方案范文

武汉肥猫科技商城网站建设,一个完整的营销策划方案范文,国产地图软件哪个好用,台州建设网站制作互斥锁sync.Mutex是在并发程序中对共享资源进行访问控制的主要手段,对此Go语言提供了非常简单易用的机制。sync.Mutex为结构体类型,对外暴露Lock()、Unlock()、TryLock()三种方法,分别用于阻塞加锁、解锁、非阻塞加锁操作(加锁失败…

互斥锁sync.Mutex是在并发程序中对共享资源进行访问控制的主要手段,对此Go语言提供了非常简单易用的机制。sync.Mutex为结构体类型,对外暴露Lock()、Unlock()、TryLock()三种方法,分别用于阻塞加锁、解锁、非阻塞加锁操作(加锁失败后快速返回结果不会陷入阻塞状态)。

sync.Mutex内部实现比较复杂,但是坚持阅读之后,却有很大的收益。比如如何设计一个任务调度系统,每个时间点只有一个任务执行,在调度任务时,既需要保证任务执行的效率也需要保证一个任务不会出现饿死的情况,sync.Mutex的内部机制可能会给你一些借鉴经验。除此之外,还能够让你对TryLock有更加深刻的理解和在使用Mutex时的注意点。

版本:go1.24.1

数据结构

//package: pakcage:src\internal\sync\mutex.gotype Mutex struct {state int32sema  uint32
}const (mutexLocked = 1 << iota // mutex is lockedmutexWokenmutexStarvingmutexWaiterShift = iotastarvationThresholdNs = 1e6
)

Mutex结构比较简单,定义了两个字段:

  • state:根据bit位的划分,表示多种含义。
  • sema:信号量,用于管理协程阻塞和唤醒的关键机制,确保协程高效调度和唤醒。

state字段通过分割比特位来表示三种状态和记录当前等待获取锁的协程数量,从低位到高位依次为:

  • mutexLocked:1bit位,当前mutex是否被锁定,0表示未锁定,1表示锁定。
  • mutexWoken:1bit位,当前是否有协程从阻塞中被唤醒,0表示未被唤醒,1表示有协程被唤醒。
  • mutexStarving:1bit位,当前mutex的所处模式,0表示正常模式,1表示饥饿模式。
  •  mutexWaiterShift:位偏移量,利用偏移后的位来记录等待协程的数量,占用29bit位。

两种模式

正常模式和饥饿模式是sync.mutex包的精髓,通过这两种模式来保证性能和公平。

  • 正常模式:追求性能,允许新的协程通过自旋和竞争来快速获取锁,减少协程的上下文切换开销。
  • 饥饿模式:兜底公平性,确保等待者不被饿死。

在正常模式下,等待者按FIFO顺序排队,但被唤醒的等待者不拥有mutex,并与新到达的goroutines竞争所有权。而新加入的goroutines有一个优势——它们已经在CPU上运行,并且可能有很多,所以唤醒的等待者很有可能会失败。在这种情况下,它被排在等待队列的前面。如果等待者获得mutex的时间超过1ms,将mutex将切换到饥饿模式。

在饥饿模式下,mutex的所有权直接从正在解锁的goroutine移交(hand off)给队列前面的等待者。新到达的goroutines不会尝试获取mutex,即使mutex已经解锁,(新到达的goroutines)也不会尝试自旋。相反,它们把自己排在等待队列的尾部。如果一个等待者获得了mutex的所有权,并且发现以下任一条件:(1)它是队列中最后一个等待者;(2)它等待的时间少于1毫秒;那么mutex将切换回正常工作模式。

源码解读

请访问github仓库,以注释的方式进行解读,提高阅读体验和保证思考的连续性。

仓库地址:wuqiong818/go-source-interpretation: go语言解读

参考文章

Go1.24.1源码

Go专家编程 sync.Mutex章节

【Go万字洗髓经】Golang中sync.Mutex的单机锁:实现原理与底层源码-CSDN博客

http://www.cadmedia.cn/news/13135.html

相关文章:

  • 有做机械工装的网站吗做网站建设优化的公司排名
  • 江苏高端网站建设华为seo诊断及优化分析
  • 海西州电子商务网站建设公司全球网站访问量排名
  • 专业免费网站建设哪里便宜关键词优化分析工具
  • 网站建设实施背景分析百度下载免费
  • 飞行时代网站建设利尔化学股票股吧
  • 成都住房和城乡建设部网站查询北京债务优化公司
  • cnd设计网官网seo在线优化平台
  • wordpress注册用户可见东莞seo建站投放
  • 国外购物网站app线下推广有哪些渠道
  • 济南烨铭网站建设谷歌推广外贸建站
  • 网站建设项目策划石家庄百度快照优化
  • 今日重大财经新闻网站推广优化方式
  • 营口东站营销网站建设免费广州seo
  • 如何选择宜昌网站建设班级优化大师学生版
  • 网站建设项目的运行与测试报告云优客seo排名公司
  • 中小企业网站制作费用义乌百度广告公司
  • 沧州网站建设建站系统最近实时热点新闻事件
  • 广州市新冠疫情最新消息windows优化大师是官方的吗
  • 自己建的网站如何推广如何自己开发软件app
  • 网页制作和网站开发站长工具外链查询
  • 深圳市宝安区是不是很偏僻网站查询工具seo
  • 黄页网站数据来源福州seo
  • 营口规划建设局网站企业网址
  • 做微信的网站叫什么软件百度商业平台官网
  • 无锡网站优化公司小说百度搜索风云榜
  • 网站建设过程中准备的工作百度客户端在哪里打开
  • 购物网站哪个质量好贴吧引流推广
  • 怎么把自己做的网站放到百度上百度竞价排名广告定价
  • 成都市做网站的公司河南网站优化公司哪家好