Lines Matching refs:Mutex

25 /// @brief Mutex互斥量结构体
26 /// 请注意!由于Mutex属于休眠锁,因此,如果您的代码可能在中断上下文内执行,请勿采用Mutex
28 pub struct Mutex<T> {
29 /// 该Mutex保护的数据
31 /// Mutex内部的信息
37 /// 当前Mutex是否已经被上锁(上锁时,为true)
47 &emsp;&emsp;与SpinLock类似,Rust版本的Mutex具有一个守卫。使用的时候,需要将要被保护的数据的所有权移交Mutex。并且,守卫只能在加锁成功后产生,因此,每个时刻,每个Mu…
49 &emsp;&emsp;当需要读取、修改Mutex保护的数据时,请先使用Mutex的`lock()`方法。该方法会返回一个`MutexGuard`。您可以使用被保护的数据的成员函数来进行一些操作。或…
54 let x :Mutex<Vec<i32>>= Mutex::new(Vec::new());
61 // 在此处,Mutex是加锁的状态
64 // 由于上方的变量`g`,也就是Mutex守卫的生命周期结束,自动释放了Mutex。因此,在此处,Mutex是放锁的状态
68 &emsp;&emsp;对于结构体内部的变量,我们可以使用Mutex进行细粒度的加锁,也就是使用Mutex包裹需要细致加锁的成员变量,比如这样:
72 pub data: Mutex<data_struct>,
83 pub struct LockedMyStruct(Mutex<MyStruct>);
88 ### 4.1. new - 初始化Mutex
98 &emsp;&emsp;`new()`方法用于初始化一个Mutex。该方法需要一个被保护的数据作为参数。并且,该方法会返回一个Mutex
111 &emsp;&emsp;对Mutex加锁,返回Mutex的守卫,您可以使用这个守卫来操作被保护的数据。
113 &emsp;&emsp;如果Mutex已经被加锁,那么,该方法会阻塞当前进程,直到Mutex被释放。
125 &emsp;&emsp;尝试对Mutex加锁。如果加锁失败,不会将当前进程加入等待队列。如果加锁成功,返回Mutex的守卫;如果当前Mutex已经被加锁,返回`Err(错误码)`。
127 ## 5. C版本的Mutex(在将来会被废弃)
137 struct List wait_list; // Mutex的等待队列