/images/hugo/avatar.png

RWMutex

读写锁 RWMutex

1. RWMutex 使用

标准库中的 RWMutex 是一个 reader/writer 互斥锁,用来解决并发读写问题,特别适用于读多写少的场景。RWMutex 在某一时刻只能由任意数量的 reader 持有,或者是只被单个的 writer 持有。

Mutex 扩展

如何基于 Mutex 实现一个可重入锁

1. Mutex 的扩展

上一节我们介绍了 Mutex 的实现原理,这一节我们来看看如何基于标准库的 Mutex 来扩展 Mutex 提供的并发原语,包括:

  1. 实现一个可重入锁
  2. TryLock
  3. 获取等待者的数量
  4. 实现一个线程安全的队列

2. 可重入锁

实现可重入锁的关键是要锁能记住当前哪个 goroutine 持有锁,这里有两个方案:

Go Mutex 设计与实现

Go 第一个并发原语 Mutex 互斥锁

1. Mutex 的使用

互斥锁是最基本的并发原语,使用互斥锁,限定临界区只能同时由一个线程持有。基本上所有编程语言都会提供,Go 中互斥锁为 Mutex,Mutex 位于标准库 sync 中,其实现了 sync 中的 Locker 接口:

go API 设计

前面我们介绍 Go 项目工程化提到了 /api 目录。这目录是协议定义目录,用于存放约定项目接口的 IDL 文件。按照现在的主流基本都是 Protobuf 文件。Protobuf 的管理和共享就是今天的话题。