Carregando
0xF0Lição 16 de 17

Projete um pipeline de workers com canais

Coordene produtores e workers com passagem de mensagens.

18 min Questionário com 5 perguntas 1 exercício de código
Ao final desta lição, você saberá
  • 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.

main.rs
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}
Saída
15

Passagem de mensagens reduz compartilhamento mutável global e simplifica raciocínio sobre ownership entre threads.

Experimente

Até 15 XP

Acompanhe fluxo produtor-consumidor

Siga cada etapa de um pipeline com channel.

Mensagem 1 de 3Previsões 0/0
Producer thread
Channel queue
Worker loop

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.

Exercício 1

Some custos de jobs enfileirados

+25 XP

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
main.rs
Carregando editor…

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…