当我阅读 and 的文档时Mutex,RwLock我看到的区别如下:
Mutex一次只能有一个读者或作者,RwLock一次可以有一个作家或多个读者。
当您这样说时,RwLock似乎总是比 更好(更少限制)Mutex,那我为什么要使用它呢?
有时在 Rust中使用 a Mutexover an会更好:RwLock
RwLock<T>需要更多界限T才能实现线程安全:Mutex 需要T: SendSync,_RwLock 需要T是Send 并且 Sync是 自己Sync.换句话说,Mutex是唯一可以同步的包装器T。我在 reddit 中找到了一个很好且直观的解释:
由于这些限制,RwLock 要求其内容为 Sync,即两个线程同时拥有该类型的 &ptr 是安全的。互斥锁只需要发送数据,因为从概念上讲,您可以将其想象为当您锁定互斥锁时,它会将数据发送到您的线程,而当您解锁它时,数据会发送到另一个线程。
Mutex当你的Tis onlySend和 not时使用Sync。
RwLock没有指定的实现,因为它使用系统的实现。一些读写锁可能会受到writer starvation的影响,而Mutex不会出现这种问题。
Mutex当您可能有太多读者而无法让作者拥有锁时应该使用。
互斥锁是一种简单的锁定方法,用于控制对共享资源的访问。
读写锁比互斥锁更复杂。
让我自己总结一下: