转自: https://github.com/gocn/translator/blob/master/2019/w13_sync_mutex_translation.md
sync.RWMutex - 解决并发读写问题
- 原文地址:https://medium.com/golangspec/sync-rwmutex-ca6c6c3208a0
- 原文作者:Michał Łowicki
- 译文出处:https://medium.com
- 本文永久链接:https://github.com/gocn/translator/blob/master/2019/w13_sync_mutex_translation.md
- 译者:fivezh
- 校对者:咔叽咔叽
当多个线程访问共享数据时,会出现并发读写问题(reader-writer problems)。有两种访问数据的线程类型:
- 读线程 reader:只进行数据读取
- 写线程 writer:进行数据修改
当 writer 获取到数据的访问权限后,其他任何线程(reader 或 writer)都无权限访问此数据。这种约束亦存在于现实中,比如,当 writer 在修改数据无法保证原子性时(如数据库),此时读取未完成的修改必须被阻塞,以防止加载脏数据(译者注:数据库中的脏读)。还有许多诸如此类的核心问题,例如:
- writer 不能无限等待
- reader 不能无限等待
- 不允许线程出现无限等待