Mutex
继承: RefCounted < Object
二元 Semaphore,用于在多 Thread 间进行同步。
描述
同步互斥器(mutex 来源于 mutual exclusion,即互斥)。可用于在多 Thread 间进行同步,等价于二元 Semaphore。能够确保同时只有一个线程能够访问临界区。
这是一种可重入的互斥器,也就是说同一个线程能够将其多次上锁,只要也进行相同次数的解锁即可。
警告:互斥器必须谨慎使用才能避免死锁。
警告:为了能够正确清理,避免崩溃和死锁,必须满足以下条件:
Mutex 的引用计数到达零,将被销毁时,必须没有线程将其锁定(包括发生析构的线程)。
Thread 的引用计数达到零,将被销毁时,必须没有锁定任何互斥器。
教程
方法
void | lock() |
try_lock() | |
void | unlock() |
方法说明
void lock() 🔗
锁定此 Mutex,直到被当前所有者解锁为止。
注意:如果线程已经拥有互斥锁的所有权,该函数将无阻塞地返回。
尝试锁定该 Mutex,但不会阻塞。成功时返回 true
,否则返回 false
。
注意:如果该线程已经拥有了该互斥器的所有权,则函数返回 true
。
void unlock() 🔗
解锁该 Mutex,将其留给其他线程。
注意:如果一个线程在已经拥有互斥器的情况下多次调用 lock 或 try_lock,则也必须调用相同次数的 unlock 才能正确解锁。
警告:在给定的线程中调用 unlock 的次数超过调用 lock 的次数,导致尝试解锁未加锁的互斥器,是错误的行为,可能引起崩溃和死锁。