Mutex

这是简单的互斥锁,只允许一个线程访问数据空间,无论是读还是写都需要获取锁。所以他的使用场景比较受限(例如需要频繁写操作)。他的缺点也是显而易见,如果读操作频繁,可能会导致性能瓶颈。

RwLock

可以使用kernel_sync包中的读写锁。

这个包针对内核环境进行了优化,可能更适合低延迟和高吞吐量的场景。

特点:

  • 允许多个线程同时读取数据,但是写操作是独占的。

适用于读操作远多于写操作的场景(缓存、配置数据等)。

SyncUnsafeCell替换Mutex提高性能

SyncUnsafeCell作用:

  1. 获取可变数据:在Rust 中,默认情况下,数据是不可变的,且不能在多个线程之间共享可变数据。SyncUnsafeCell 允许你在多线程环境中共享可变数据。
  2. 内部可变性SyncUnsafeCell提供内部可变性,可以在不获取可变引用情况下修改其内容。
  3. 安全性:他通过同步机制确保了对UnsafeCell的安全访问。