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 退出临界区ÿ

相关推荐

  1. Go 语言互斥 Mutex

    2024-07-17 05:52:04       23 阅读
  2. go语言Mutex

    2024-07-17 05:52:04       45 阅读
  3. Golang 并发 Mutex 互斥使用

    2024-07-17 05:52:04       27 阅读
  4. Go语言乐观与悲观

    2024-07-17 05:52:04       64 阅读
  5. 【C++并发编程】(三)互斥:std::mutex

    2024-07-17 05:52:04       32 阅读
  6. qt读写互斥区别

    2024-07-17 05:52:04       52 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-17 05:52:04       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 05:52:04       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 05:52:04       57 阅读
  4. Python语言-面向对象

    2024-07-17 05:52:04       68 阅读

热门阅读

  1. k8s入门:从安装到实际应用

    2024-07-17 05:52:04       29 阅读
  2. ajax实时监测与springboot的实例分析

    2024-07-17 05:52:04       24 阅读
  3. 计算机网络入门 --网络模型

    2024-07-17 05:52:04       24 阅读
  4. 【Qt+opencv】计时函数与图像变换

    2024-07-17 05:52:04       26 阅读
  5. 简谈设计模式之适配器模式

    2024-07-17 05:52:04       24 阅读
  6. PR轨道蒙版|字体后放视频动画

    2024-07-17 05:52:04       24 阅读
  7. try-catch-finally使用注意事项

    2024-07-17 05:52:04       19 阅读
  8. IPython的数学魅力:%%latex命令绘制公式指南

    2024-07-17 05:52:04       24 阅读
  9. 采购管理软件:改善初创企业的采购流程

    2024-07-17 05:52:04       25 阅读
  10. 机体坐标系和导航坐标系

    2024-07-17 05:52:04       26 阅读
  11. 前后端工作重点小结

    2024-07-17 05:52:04       22 阅读
  12. WPF设置欢迎屏幕,程序启动过度动画

    2024-07-17 05:52:04       19 阅读
  13. 设计模式8种原则

    2024-07-17 05:52:04       20 阅读