Mutex
比RwLock
更好:
RwLock<T>
需要更多的边界来使T
线程安全:Mutex
要求 T: Send
才能是Sync
,RwLock
要求T
是Send
和 Sync
才能使自身成为Sync
。换句话说,Mutex
是唯一一个可以使T
同步的包装器。我在Reddit上找到了一个好的、直观的解释:
由于这些限制,RwLock要求其内容是同步的,即两个线程同时拥有该类型的 &ptr 是安全的。Mutex仅要求数据是可发送的,因为你可以从概念上将其视为当你锁定Mutex时,它会将数据发送到您的线程,当您解锁它时,数据会发送到另一个线程。
当你的T
只是Send
而不是Sync
时,请使用Mutex
。
RwLock
没有特定的实现,因为它使用系统的实现。一些读写锁可能会受到writer starvation的影响,而Mutex
则不会出现这种问题。
当你可能有太多的读取器以至于无法让写入器获得锁时,应该使用Mutex
。
Mutex是一种简单的锁定方法,用于控制对共享资源的访问。
读写锁比互斥锁更加复杂。
让我为自己总结一下: