目录
在并发编程中,锁(lock)是用来保护共享资源的一种机制。在go语言中,锁是实现并发的重要工具之一。它可以确保在多个协程中同时访问共享资源时,只有一个协程能够读取或修改这些资源。
1,互斥锁(sync.Mutex)
互斥锁(Mutual Exclusion Lock)是Go语言中最常用的锁机制。它确保同一时刻只有一个协程可以访问临界区。通俗地说,互斥锁通过将共享资源包裹在锁临界区内,确保同一时间内只有一个协程访问。
在Go语言中,可以使用sync包中的Mutex类型来创建一个互斥锁,互斥锁不支持重入。如果一个协程已经获取到了这个锁,再次尝试获取锁将会导致死锁。所以,我们通常使用defer语句来在协程结束时自动释放锁。
import "sync" //导入sync包
var mutex = &sync.Mutex{} //创建锁
for i := 0; i< 100; i++{ //在循环里,创建100个协程
go func(){
defer mutex.Unlock() //defer 表示是