Argomenti importanti di Rust
Rust Channels: mpsc
Send messages from one thread to another instead of sharing memory.
Cosa imparerai
- 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.
Punti chiave
channel()returns a sender and a receiver.- The receiver can be used in a for loop.
- Dropping the sender closes the channel.
Esempio Rust eseguibile
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 receivedEsercitati
Apri l'esempio nel compilatore online, cambia un valore o aggiungi una riga e prova a prevedere l'output prima di eseguirlo. Poi rompi il codice di proposito e leggi il messaggio del compilatore.
Hai finito questa lezione?
Segnala come imparata per tenere traccia dei tuoi progressi.
I tuoi progressi sono salvati in questo browser Accedi per conservarli su ogni dispositivo.
Esercitati con una sfida
Usa ciò che questa lezione spiega per risolvere un problema reale. Ogni sfida gira nel browser, con test immediati e una revisione dell'IA.
Tutte le sfide