Go语言读写锁RWMutex怎么使用


GoRWMutexRWMutex/reader writer reader reader writer writer RWMutex RLock()writerwriterRUnlock()Lock()readerwriterUnlock()RLocker()LockerLock()RWMutexRLock()Unlock()RWMutexRUnlock() reader writer reader writer reader reader writer reader reader writer writer writer reader writer writer reader RWMutex RWMutex readerwriterA writer B A writer writer B writer A reader reader A reader writer writer readerBwriter A A writerW1 reader readerB writerRWMutex reader writerW1A readerARWMutexW1 reader W1RWMutexW1 reader B W2AW2BAR8AR8R9R10R11W2W4B RWMutexRWMutexreaderreaderCountreaderwriterAreaderCount writer A writer A readerCountreaderCount = readerCount - rwmutexMaxReadersreaderWait reader readerreaderCountwriter reader readerCountreaderWait readerWait==0 writer reader writer writer readerCount readerCount = readerCount + rwmutexMaxReaders readerreaderCount = 2reader 10 writer A readerCount = readerCount – rwmutexMaxReaders = -8readerWait = readerCount = 2 3 readerreaderCount = readerCount + 3 = -5reader readerCount = readerCount – 2 = -7readerWait = readerWait-2 =0writer writer readerCount = readerCount + rwmutexMaxReaders = 3 3 readerreader RLock() reader RUnlock() writer Lock() Lock()RUnlock() Lock() readerCount r=3 reader readerWait CPU readerWait = 0 reader RUnlock() rUnlockSlow() reader readerWait readerWait writer reader readerWait = -3 Lock() atomic.AddInt32(&rw.readerWait, r) = -3+3 =0 reader rUnlockSlow()atomic.AddInt32(&rw.readerWait, -1) == 0Lock()atomic.AddInt32(&rw.readerWait, r) != 0writer Lock() writer readerCount writer writer readerCount reader readerCount reader writer rwmutexMaxReaders Mutex RWMutex reader A 免费云主机域名writer B reader A reader writer BGo map RWMutex map RWMutex Mutex GoRWMutex

相关推荐: C++高级数据结构之二叉查找树怎么实现

本文小编为大家详细介绍“C++高级数据结构之二叉查找树怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++高级数据结构之二叉查找树怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。此数据结构由结点组成,结点包含的链接可…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 05/09 18:18
下一篇 05/09 18:18

相关推荐