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则会同时打印
转载请注明来源