package main import ( "fmt" "sync" ) var lock sync.Mutex //互斥锁 var wg sync.WaitGroup//等待一组协程结束 var total int func sub() { defer wg.Done()//底层是wg.add(-1) for i :=0;i<1000000;i++{ lock.Lock() total -=1 lock.Unlock() } } func add() { defer wg.Add(-1) for i :=0;i<1000000;i++{ lock.Lock() total +=1 lock.Unlock() } } func main() { //调用add方法来设定应等待的线程的数量 wg.Add(2) go add() go sub() wg.Wait()//表示main协程进入等待,意味着阻塞 fmt.Println(total) }
golang 互斥锁
最新推荐文章于 2025-03-23 18:47:33 发布