Avatar ·

Quand utiliser Mutex et quand utiliser RwLock en Rust pour le multithreading ?

Bonjour, collègues ! J’étudie 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 bien 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 je sens 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