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  }