基本结构

mutex

互斥量的基本语义是,一个互斥量只能被一个线程锁定,用来保护某个代码块在同一时间只能被一个线程执行。

目前的 C++ 标准中,事实上提供了不止一个互斥量类。mutex 就是最简单、最常用的一个。

mutex 只可默认构造,不可拷贝(或移动),不可赋值,主要提供的方法是:

recursive_mutex

如果一个线程已经锁定了某个互斥量,再次锁定会发生什么?对于 mutex,回答是危险的未定义行为。

如果有特殊需要可能在同一线程对同一个互斥量多次加锁,就需要用到递归锁 recursive_mutex 了。除了可以无阻塞地多次加锁外(也必须有对应数量的解锁操作),recursive_mutex 的其他行为和 mutex 一致。

timed_mutex

允许锁定超时的互斥量

recursive_timed_mutex

允许锁定超时的递归互斥量

shared_mutex

允许共享和独占两种获得方式的互斥量

shared_timed_mutex

允许共享和独占两种获得方式的、允许锁定超时的互斥量