golang

golang 互斥锁

2022-10-27  本文已影响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)
}
上一篇 下一篇

猜你喜欢

热点阅读