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

Go 语言中的互斥锁 Mutex

        Mutex 是一种互斥锁,名称来自 mutual exclusion,是一种用于控制多线程对共享资源的竞争访问的同步机制。在有的编程语言中,也将其称为锁(lock)。当一个线程获取互斥锁时,它将阻止其他线程对该资源的访问,直到该线程释放锁。这可以防止多个线程对共享资源进行冲突访问,从而保证线程安全。我们通常把 Mutex 这样的用来帮助实现同步的类型称为同步原语(synchronization primitive)。当然,在其他一些编程语言的环境中指的是多线程的同步机制,在 Go 语言中指的就是 goroutine 的同步机制。

         互斥锁的概念可以追溯到 1968 年,当时计算机科学家 E.W.Dijkstra 在论文 “Solutions of a Problem in Concurrent Programming Control” 中首次实现了一种同步机制,防止两个进程同时进入临界区( critical section),该方案后来被称为 "Dijkstra 互斥算法” ,并成为互斥锁的一种基本实现。随后,互斥锁逐渐被广泛应用于多线程编程,成为一种重要的同步机制。今天,它已经被广泛应用于不同的编程语言和平台。

        在 Go 语言中,标准库 sync 包中提供了 Mutex, 它实现了互斥锁的功能。Mutex 可以提供对临界区的保护。临界区不仅仅指一个资源、一个变量,它也可以指一组资源、一段处理代码,我们把程序中这部分因为并发访问和修改需要保护起来的代码称作临界区,比如对数据库连接的访问、对某一个共享数据结构的操作、对一个 I/O 设备的使用、对一个 goroutine 进入。当临界区中有一个 goroutine 时,如果其他线程想进入这个临界区,就会返回失败,或者需要等待,直到已进入的那个 goroutine 退出临界区ÿ

http://www.lryc.cn/news/401228.html

相关文章:

  • CSS 中的 ::before 和 ::after 伪元素
  • JuiceFS缓存特性
  • R语言实现SVM算法——分类与回归
  • React@16.x(57)Redux@4.x(6)- 实现 bindActionCreators
  • 【深度学习入门篇 ⑦】PyTorch池化层
  • 【Pytorch】数据集的加载和处理(一)
  • 论文翻译:Explainability for Large Language Models: A Survey
  • 38 IRF+链路聚合+ACL+NAT组网架构
  • 【昇思学习打卡营打卡-第二十八天】MindNLP ChatGLM-6B StreamChat
  • 前端打包部署后源码安全问题总结
  • 扩展你的App:Xcode中App Extensions的深度指南
  • 【D3.js in Action 3 精译】1.3 D3 视角下的数据可视化最佳实践(下)
  • Solus Linux简介
  • 常见的排序算法,复杂度
  • 鸿蒙特色物联网实训室
  • JVM垃圾回收-----垃圾分类
  • 前端基础之JavaScript学习——变量、数据类型、类型转换
  • SQL常用数据过滤---IN操作符
  • HDFS和FDFS
  • Flutter对接FlutterBugly 报错Zone mismatch
  • Docker缩小镜像体积与搭建LNMP架构
  • 六边形动态特效404单页HTML源码
  • BGP路径属性
  • 从零开始学量化~Ptrade使用教程(六)——盘后定价交易、港股通与债券通用质押式回购
  • Docker 三剑客
  • 每天一个数据分析题(四百三十一)- 卡方检验
  • Flowable-流程图标与流程演示
  • MyBatis源码中的设计模式2
  • AI发展中的伦理挑战与应对策略
  • 基于用户非兴趣/非偏好/非习惯的推荐