Mutex<Data>
数据被 Mutex<T>
拥有,获得锁用 m.lock()
(会阻塞线程,返回 Result
),在作用域结束后锁会自动释放。
准确地说,
mutex.lock()
返回一个智能指针MutexGuard<T>
。它实现了Deref
,会自动解引用,指向Mutex<T>
内的数据。还实现了Drop
,作用域结束之后自动释放锁。
mutex.try_lock()
则尝试获取锁,返回包含数据或者错误的 Result
读写锁 RwLock<T>
相比于 Mutex<T>
- 同一时间允许多个 read,但只允许一个 write。读写不允许同时存在
- 多个 read 的时候不会阻塞