您好,欢迎访问一九零五行业门户网

关于golang读写锁

下面由golang教程栏目给大家介绍关于golang读写锁,希望对需要的朋友有所帮助!
golang读写锁,其特征在于
读锁:可以同时进行多个协程读操作,不允许写操作
写锁:只允许同时有一个协程进行写操作,不允许其他写操作和读操作
读写锁共有四个方法
rlock:获取读锁
runlock:释放读锁
lock:获取写锁
unlock:释放写锁
使用例子如下
package mainimport (    fmt    sync    time)var grwlock *sync.rwmutexvar gvar intfunc init() {    grwlock = new(sync.rwmutex)    gvar = 1}func main() {    var wg sync.waitgroup    go read(1, &wg)    wg.add(1)    go write(1, &wg)    wg.add(1)    go read(2, &wg)    wg.add(1)    go read(3, &wg)    wg.add(1)    wg.wait()}func read(id int, wg *sync.waitgroup) {    fmt.printf(read coroutine: %d start\n, id)    defer fmt.printf(read coroutine: %d end\n, id)    grwlock.rlock()    fmt.printf(gvar %d\n, gvar)    time.sleep(time.second)    grwlock.runlock()    wg.done()}func write(id int, wg *sync.waitgroup) {    fmt.printf(write coroutine: %d start\n, id)    defer fmt.printf(write coroutine: %d end\n, id)    grwlock.lock()    gvar = gvar + 100    fmt.printf(gvar %d\n, gvar)    time.sleep(time.second)    grwlock.unlock()    wg.done()}
以上就是关于golang读写锁的详细内容。
其它类似信息

推荐信息