Canales en Rust
mpsc mueve valores entre hilos: muchos emisores, un receptor.
use std::sync::mpsc;
use std::thread;
fn main() {
let (tx, rx) = mpsc::channel();
for id in 0..3 {
let tx = tx.clone();
thread::spawn(move || {
tx.send(format!("worker {id} finished")).unwrap();
});
}
drop(tx);
for message in rx {
println!("{message}");
}
}
Cómo funciona
- Cada hilo recibe su propio clone del emisor.
- El receptor itera hasta que todos los emisores se sueltan.
- Los valores se mueven, así que no hay nada que trabar.
Palabras clave y builtins usados aquí
dropfnforinletmoveuse
El intento, en números
- Líneas
- 18
- Caracteres a escribir
- 260
- Tokens
- 93
- Ritmo de tres estrellas
- 105 tpm
Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 53 segundos.
Paso 1 de 2 en Canales; paso 7 de 15 en Concurrencia y async.