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