基本原语


sync.Mutex与sync.RWMutex


互斥锁sync.Mutex比较暴力,一个协程锁住后,其他协程只能等待;而不管这个协程是读操作还是写操作.

读写(互斥)锁sync.RWMutex是细粒度的互斥锁, 它不限制资源的并发读. 但是读写、写写操作无法并行执行.

一个常见的服务对资源的读写比例会非常高,因为大多数的读请求之间不会相互影响,所以我们可以读写资源操作的分离,在类似场景下提高服务的性能。 读多写少的场景,推荐使用sync.RWMutex

二者的区别,有点类似mysql的排它锁(X锁/写锁)和共享锁(S锁/读锁)


sync包–Mutex

sync.RWMutex的实现需要基于sync.Mutex


sync.Waitgroup

sync包-Waitgroup实现原理

依赖了sync.Mutex



sync.Once

依赖了sync.Mutex




sync.Cond

依赖了sync.Mutex



sync.Pool

sync包-Pool


sync.Map

sync包-Map

golang之map并发访问


扩展原语