package main
import (
"fmt"
"sync"
)
var counter int64
var wg sync.WaitGroup
var mu sync.Mutex // 声明一个互斥锁
func incr() {
mu.Lock() // 获取互斥锁.确保只有一个 goroutine 能够访问共享资源。
defer mu.Unlock() // 在函数执行结束时释放互斥锁,以免忘记手动释放锁导致死锁。
counter++ // 对共享变量进行操作
wg.Done()//代表一个go任务结束操作
}
func main() {
wg.Add(2)//需要等待的 goroutine 数量为 2。
go incr()
go incr()
wg.Wait()//阻塞主 goroutine(main) 直到所有 goroutine 执行完成。
fmt.Println("值:", counter)
}
go 互斥锁的案例
最新推荐文章于 2024-04-27 23:06:51 发布