Avatar ·

Quando usar Mutex e quando usar RwLock em Rust para multithreading?

Olá, colegas! Estou estudando Rust e multithreading, e me deparei com dois primitivos de sincronização: `Mutex` e `RwLock`. Ambos parecem proteger dados contra condições de corrida, mas não entendo completamente quando escolher um ou outro. Tenho um projeto onde várias threads leem e, ocasionalmente, escrevem dados em um cache compartilhado (HashMap). Escrevi um exemplo simples com `Mutex`, mas sinto que não é o ideal, porque a leitura bloqueia outras leituras: ```rust use std::sync::{Arc, Mutex}; use std::thread; use std::collections::HashMap; fn main() { let cache = Arc::new(Mutex::new(HashMap::new())); let mut handles = vec![]; for i in 0..10 { let cache = Arc::clone(&cache); handles.push(thread::spawn(move || { let mut data = cache.lock().unwrap(); data.insert(i, for