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 的时候不会阻塞

std::sync::CondVar 条件变量


tokio::sync::Semaphore 信号量