État partagé
Avancéuse std::sync::Arc;
use tokio::sync::Mutex;
let compteur = Arc::new(Mutex::new(0));
let mut handles = vec![];
for _ in 0..10 {
let c = Arc::clone(&compteur);
handles.push(tokio::spawn(async move {
let mut guard = c.lock().await; // lock() est async
*guard += 1;
}));
}
for h in handles { h.await.unwrap(); }
Astuce : si le verrou n'est jamais tenu à travers un
.await, unstd::sync::Mutexclassique est plus rapide et recommandé. Utiliseztokio::sync::Mutexseulement quand vous devez garder le verrou pendant un.await.