github.com/gogf/gf@v1.16.9/.example/os/gmutex/gmutex_basic.go (about) 1 package main 2 3 import ( 4 "time" 5 6 "github.com/gogf/gf/os/glog" 7 "github.com/gogf/gf/os/gmutex" 8 ) 9 10 func main() { 11 mu := gmutex.New() 12 for i := 0; i < 10; i++ { 13 go func(n int) { 14 mu.Lock() 15 defer mu.Unlock() 16 glog.Println("Lock:", n) 17 time.Sleep(time.Second) 18 }(i) 19 } 20 for i := 0; i < 10; i++ { 21 go func(n int) { 22 mu.RLock() 23 defer mu.RUnlock() 24 glog.Println("RLock:", n) 25 time.Sleep(time.Second) 26 }(i) 27 } 28 time.Sleep(11 * time.Second) 29 }