代码点读机 / Go / sync.Mutex

sync.Mutex Go · 包功能

互斥锁:保证同一时刻最多只有一个 goroutine 进入临界区,防止数据竞争。

怎么用

var mu sync.Mutex; mu.Lock(); defer mu.Unlock()

小例子

package main
import (
    "fmt"
    "sync"
)

func main() {
    var mu sync.Mutex
    mu.Lock()
    fmt.Println("临界区")
    mu.Unlock()
}

运行结果

输出 临界区

提醒:Lock 和 Unlock 必须成对,通常用 defer 保证释放

官方文档:https://pkg.go.dev/sync#Mutex

在代码里遇到不认识的词?打开代码点读机,点一下就懂 → ← Go全部词条