Wichtige Rust-Themen

Rust Arc and Mutex

Let several threads change one value safely: Arc shares it, Mutex guards it.

  • Profi
  • 3 Min. Lesezeit
  • 1 ausführbares Beispiel
Das lernst du
  • Mutex and lock
  • Arc::clone
  • Why the count is always right
4 threads x 1000 increments
  1. 1Arc::cloneeach thread gets a handle
  2. 2lock()one at a time
  3. 3*value += 1safe update
  4. 44000always

One lock, many owners

When threads must change the same value, a Mutex makes sure only one of them touches it at a time. Arc lets every thread own a handle to that Mutex.

Arc::clone gives each thread its own handle to the same counter. lock waits until no other thread holds the lock and returns a guard; the lock is released when the guard goes out of scope. Four threads each add 1000, so the result is always 4000.

Das Wichtigste

  1. lock gives one thread access at a time.
  2. The lock is released when the guard goes out of scope.
  3. Arc lets every thread own a handle.

Ausführbares Rust-Beispiel

Rust
Code ausführen →
main.rs
use std::sync::{Arc, Mutex};
use std::thread;

fn main() {
    let counter = Arc::new(Mutex::new(0));
    let mut handles = Vec::new();

    for _ in 0..4 {
        let counter = Arc::clone(&counter);
        handles.push(thread::spawn(move || {
            for _ in 0..1000 {
                let mut value = counter.lock().unwrap();
                *value += 1;
            }
        }));
    }

    for handle in handles {
        handle.join().unwrap();
    }
    println!("final count: {}", *counter.lock().unwrap());
}
Run-Button für dieses Beispiel erstellen Ergebnis der Ausführung
final count: 4000

Üben

Öffne das Beispiel im Online-Compiler, ändere einen Wert oder füge eine Zeile hinzu und sage die Ausgabe voraus, bevor du es ausführst. Bring den Code danach absichtlich zum Scheitern und lies die Meldung des Compilers.

Lektion fertig?

Markiere sie als gelernt, um deinen Fortschritt zu verfolgen.

Mit einer Challenge üben

Nutze den Inhalt dieser Lektion, um ein echtes Problem zu lösen. Jede Challenge läuft im Browser, mit sofortigen Tests und einem KI-Review.

Alle Challenges