golang读写锁的案例

  介绍

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读写锁的案例大概了解了吗?希望文章内容对大家有所帮助。如果想了解更多相关文章内容,欢迎关注行业资讯频道。

golang读写锁的案例