Wichtige Rust-Themen
Rust Channels: mpsc
Send messages from one thread to another instead of sharing memory.
Das lernst du
- mpsc::channel
- send and receive
- How a channel closes
Producer to main
- 1
sender.sendproducer thread - 2
channelstep 1, step 2, step 3 - 3
for message in receivermain thread
A one-way pipe between threads
A channel is a one-way pipe between threads. One side sends values and the other receives them, so threads can work together without sharing memory.
channel returns a sender and a receiver. The producer thread owns the sender and sends three messages. When the thread ends, the sender is dropped and the channel closes, which ends the for loop over the receiver.
Das Wichtigste
channel()returns a sender and a receiver.- The receiver can be used in a for loop.
- Dropping the sender closes the channel.
Ausführbares Rust-Beispiel
Rust
main.rs
use std::sync::mpsc;
use std::thread;
fn main() {
let (sender, receiver) = mpsc::channel();
let producer = thread::spawn(move || {
for step in 1..=3 {
sender.send(format!("step {step} done")).unwrap();
}
}); // sender is dropped here, which closes the channel
for message in receiver {
println!("received: {message}");
}
producer.join().unwrap();
println!("all messages received");
}
received: step 1 done
received: step 2 done
received: step 3 done
all messages receivedÜ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.
Dein Fortschritt ist in diesem Browser gespeichert Melde dich an, um ihn auf jedem Gerät zu behalten.
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