Mutex与RwLock互斥读写
对比Mutex(单一锁)和RwLock(读写锁)的适用场景与性能差异。 · 难度:入门 · +15XP
Mutex与RwLock互斥读写
Mutex 提供互斥访问,同一时间只允许一个线程持有锁,适合写多读少场景。RwLock 允许多个读者或单个写者,读操作可并发,写操作独占,适合读多写少场景。注意:RwLock 在写操作时可能造成读者饥饿。
use std::sync::{Mutex, RwLock};
fn main() {
let data_mutex = Mutex::new(0);
let data_rw = RwLock::new(0);
// Mutex 写
{
let mut val = data_mutex.lock().unwrap();
*val += 1;
}
// RwLock 读
let reader = data_rw.read().unwrap();
println!("RwLock read: {}", *reader);
drop(reader);
// RwLock 写
let mut writer = data_rw.write().unwrap();
*writer += 2;
println!("RwLock write: {}", *writer);
}