美文网首页golang
golang 互斥锁

golang 互斥锁

作者: 顶尖少爷 | 来源:发表于2022-10-27 23:51 被阅读0次

锁的作用就是某个 协程 (线程)在访问某个资源时先锁住,防止其它协程的访问,等访问完毕解锁后其他协程再来加锁进行访问。

互斥锁是传统的并发程序对共享资源进行访问控制的主要手段。防止重要资源被多个 协程同时调用。它由标准库代码包sync中的Mutex结构体类型代表。sync.Mutex类型(确切地说,是*sync.Mutex类型)只有两个公开方法——Lock和Unlock。顾名思义,前者被用于锁定当前的互斥量,而后者则被用来对当前的互斥量进行解锁。

类型sync.Mutex的零值表示了未被锁定的互斥量。也就是说,它是一个开箱即用的工具。我们只需对它进行简单声明就可以正常使用了

var x int
var wg sync.WaitGroup //等待
var mutex sync.Mutex //互斥锁


func f1() {
    mutex.Lock()
    for i := 0; i < 1000; i++ {
        x++
    }
    defer mutex.Unlock()
    wg.Done()
}


func main() {
    wg.Add(2)
    go f1()
    go f1()
    wg.Wait()

    fmt.Println(x)
}

相关文章

  • Golang 锁的相关知识

    Golang锁分类:互斥锁(Mutex)、读写锁(RWMutex)。 互斥锁 在编写代码中引入了对象互斥锁的概念,...

  • go-锁机制

    Golang中的锁机制主要包含互斥锁和读写锁 互斥锁 互斥锁是一种简单的加锁的方法来控制对共享资源的访问,互斥锁只...

  • golang 互斥锁

    1,竞态的出现原因 竞态的产生是因为多个对象同时访问一个对象的时候就会产生。 最常见的例子是数据库。 在开发中多线...

  • golang互斥锁

    互斥锁是一个很有用的同步工具,它可以保证每一时刻进入临界区的goroutine只有一个。条件变量主要是用于协调想要...

  • golang 中 sync.Mutex 和 sync.RWMut

    介绍 golang 中的 sync 包实现了两种锁: Mutex:互斥锁 RWMutex:读写锁,RWMutex ...

  • golang笔记之基于共享变量的并发

    介绍 golang 中的 sync 包实现了两种锁: Mutex:互斥锁 RWMutex:读写锁,RWMutex ...

  • 技术好文集合

    缓存热点key 大value问题,解决方案 golang sync.Map 如何理解互斥锁、条件锁、读写锁以及自旋锁?

  • (七)golang 互斥量 源码分析

    互斥锁 源码位置:https://github.com/golang/go/blob/master/src/syn...

  • go程

    golang里捕获进程信号实现优雅退出的方法 一、定时与 同步退出 二、锁 互斥锁Mutex Lock,UnLock

  • Golang 读写锁RWMutex 互斥锁Mutex 源码详解

    前言 Golang中有两种类型的锁,Mutex (互斥锁)和RWMutex(读写锁)对于这两种锁的使用这里就不多说...

网友评论

    本文标题:golang 互斥锁

    本文链接:https://www.haomeiwen.com/subject/incqtdtx.html