</>
Plan du cours — 54/66

É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, un std::sync::Mutex classique est plus rapide et recommandé. Utilisez tokio::sync::Mutex seulement quand vous devez garder le verrou pendant un .await.