Mutex

继承: RefCounted < Object

用于同步多个Threads的二进制Semaphore

描述

一个同步互斥锁(互斥)。这用于同步多个Threads,相当于一个二进制Semaphore。它保证一次只有一个线程可以访问一个临界区。

这是一个可重入的互斥锁,这意味着它可以被一个线程多次锁定,前提是它也解锁它多次。

警告:必须小心使用互斥锁以避免死锁。

警告:为确保正确清理而不会崩溃或死锁,必须满足以下条件:

-当Mutex的引用计数达到零并因此被销毁时,任何线程(包括将发生销毁的线程)都必须将其锁定。

-当Thread的引用计数达到零并因此被销毁时,它不得锁定任何互斥锁。

方法

void

lock()

bool

try_lock()

void

unlock()


方法说明

void lock() 🔗

锁定此Mutex,阻塞直到它被当前所有者解锁。

注意:如果线程已经拥有互斥锁的所有权,则此函数返回而不阻塞。


bool try_lock() 🔗

尝试锁定此Mutex,但不阻塞。成功时返回true,否则返回false

注意:如果线程已经拥有互斥锁的所有权,则此函数返回true


void unlock() 🔗

解锁此Mutex,将其留给其他线程。

注意:如果一个线程多次调用lock()try_lock(),同时已经拥有互斥锁的所有权,它也必须调用unlock()相同的次数才能正确解锁它。

警告:在给定线程上调用unlock()的次数超过lock(),从而最终尝试解锁未锁定的互斥锁,这是错误的,可能会导致崩溃或死锁。