sync.Mutex互斥锁的用法

sync.Mutex可以对一个资源加锁解锁,先抢到的先使用

type test32 struct {
   name string
   lock sync.Mutex
}

func (t *test32) startPrint(s string) {
   t.lock.Lock()
   defer t.lock.Unlock()
   fmt.Println(t.name + s)
   time.Sleep(time.Second)
   fmt.Println(t.name + s)
   time.Sleep(time.Second)
   fmt.Println(t.name + s)
}

func main() {
   t := &test32{name: "zhangsan"}//传递的是指针,即同一个资源
   go t.startPrint("1")
   go t.startPrint("2")
   time.Sleep(time.Hour)
}

结果是先打印“zhangsan1”,后打印“zhangsan2”

如果传递的不是指针,那么1和2则会同时打印


转载请注明来源

×

喜欢就点赞,疼爱就打赏