在Go语言(Golang)中,锁是用来实现并发控制的一种机制,它可以帮助多个goroutine安全地访问共享资源,防止数据竞争和条件竞争的发生。Go标准库提供了多种锁的实现,其中最常见和最基本的包括互斥锁(Mutex)和读写锁(RWMutex)。
互斥锁(Mutex)
互斥锁是Go中最基本的锁类型,它确保了同一时刻只有一个goroutine能够访问某个资源。sync包中的Mutex类型提供了加锁(Lock)和解锁(Unlock)的方法。
import "sync"
var (
mu sync.Mutex
// 假设这里是某个共享资源
counter int
)
func increment() {
mu.Lock() // 加锁
// 临界区开始
counter++
// 临界区结束
mu.Unlock() // 解锁
}
在上面的例子中,increment函数在修改全局变量counter之前会先调用mu.Lock()进行加锁,确保在修改过程中没有其他goroutine能够访问counter。修改完成后,通过mu.Unlock()解锁,允许其他goroutine访问counter。

最低0.47元/天 解锁文章
2202

被折叠的 条评论
为什么被折叠?



