介绍
golang读写锁的案例?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!
golang读写锁,其特征在于
- <李>
读锁:可以同时进行多个协程读操作,不允许写操作
李> <李>写锁:只允许同时有一个协程进行写操作,不允许其他写操作和读操作
李>读写锁共有四个方法
- <李>
RLock:获取读锁
李> <李>RUnLock:释放读锁
李> <李>锁:获取写锁
李> <李>解锁:释放写锁
李>使用例子如下
包主要 进口(“fmt" “sync" “time") var gRWLock *同步。RWMutexvar gVar intfunc init () { gRWLock=new (sync.RWMutex) gVar=1} 函数main () {var wg sync.WaitGroup 读(1,wg) wg.Add (1) 去写(1,wg) wg.Add (1) 读(2,wg) wg.Add (1) 读(3,wg) wg.Add (1) wg.Wait () } 函数读取(id int, wg * sync.WaitGroup) { fmt.Printf(“读协同程序:% d开始\ n", id) 推迟fmt.Printf(“读协同程序:% d结束\ n", id) gRWLock.RLock () fmt.Printf (“gVar % d \ n", gVar) time . sleep (time.Second) gRWLock.RUnlock () wg.Done () } func写(id int, wg * sync.WaitGroup) { fmt.Printf(“写协同程序:% d开始\ n", id) 推迟fmt.Printf(“写协同程序:% d结束\ n", id) gRWLock.Lock () gVar=gVar + 100 fmt.Printf (“gVar % d \ n", gVar) time . sleep (time.Second) gRWLock.Unlock () wg.Done () }
感谢各位的阅读!看完上述内容,你们对golang读写锁的案例大概了解了吗?希望文章内容对大家有所帮助。如果想了解更多相关文章内容,欢迎关注行业资讯频道。