Projete um pipeline de workers com canais
Coordene produtores e workers com passagem de mensagens.
- Usar threads e channels para processar jobs com segurança.
Um padrão comum em produção é processamento por fila: uma parte produz trabalho enquanto workers consomem tarefas concorrentes. Em Rust, std::sync::mpsc e threads tornam esse fluxo seguro e explícito.
1use std::sync::mpsc;
2use std::thread;
3
4fn main() {
5 let (tx, rx) = mpsc::channel();
6 thread::spawn(move || {
7 for value in [3, 5, 7] {
8 tx.send(value).unwrap();
9 }
10 });
11
12 let mut sum = 0;
13 for item in rx {
14 sum += item;
15 }
16
17 println!("{}", sum);
18}15
Passagem de mensagens reduz compartilhamento mutável global e simplifica raciocínio sobre ownership entre threads.
Experimente
Até 15 XPAcompanhe fluxo produtor-consumidor
Siga cada etapa de um pipeline com channel.
Principais conclusões
Message passing reduz risco de data races.
Workers podem agregar métricas por job.
Fechamento de canal define fim natural de processamento.
Quiz da aula
5 perguntas · aprovação com 4 acertos · até 50 XP
Ao passar, você conclui a aula e mantém sua sequência. As perguntas erradas voltarão em sessões de revisão.
Pratique: escreva código em Rust
Estes exercícios rodam de verdade. Escreva o programa, clique em “Executar testes” e leia o que o compilador informa: aprender a ler as mensagens do compilador é metade do aprendizado de Rust.
Some custos de jobs enfileirados
Leia uma linha com inteiros separados por espaço (custos de jobs). Envie cada custo por channel de produtor para consumidor e imprima o custo total.
- Três jobs
- Um job
As aulas de Rust foram escritas para o Rust estável moderno; os exercícios rodam no Rust 1.82 pelo Wandbox, um serviço público gratuito. Seu código-fonte e a entrada de teste são enviados a esse serviço.
Dúvidas sobre esta lição
Travou em algum ponto? Pergunte. Descobriu algo? Compartilhe. Explicar também é uma ótima forma de aprender.
Carregando publicações…