Quand utiliser Mutex et quand utiliser RwLock en Rust pour le multithreading ?
Salut les collègues ! J'apprends Rust et le multithreading, et je suis tombé sur deux primitives de synchronisation : `Mutex` et `RwLock`. Apparemment, les deux protègent les données contre les courses, mais je ne comprends pas vraiment quand choisir l'un ou l'autre.
J'ai un projet où plusieurs threads lisent et parfois écrivent des données dans un cache partagé (HashMap). J'ai écrit un exemple simple avec `Mutex`, mais j'ai l'impression que ce n'est pas optimal, car la lecture bloque les autres lectures :
```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