Agendador de Tarefas Rust

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Planejador de Tarefas Rust: Gerenciamento Eficiente de Tarefas Assíncronas

O planejador de tarefas em Rust é uma ferramenta poderosa para organizar a execução paralela e assíncrona de código. No ecossistema Rust, existem várias soluções populares: tokio, async-std, smol e futures. Essas bibliotecas permitem criar, agendar e gerenciar tarefas que são executadas concorrentemente, sem bloquear a thread principal. Elas são especialmente úteis para aplicações de alta carga: servidores web, serviços de rede, manipuladores de eventos e sistemas de tempo real.

Para que serve um planejador de tarefas?

Em aplicações modernas, é frequentemente necessário executar várias operações simultaneamente: processar requisições, ler arquivos, enviar dados pela rede. O planejador de tarefas Rust resolve esse problema fornecendo threads leves (futures/tasks) que são agendadas em um pool de threads. Isso permite utilizar eficientemente os recursos da CPU, evitando a sobrecarga da criação de threads do sistema. As principais vantagens são: escalabilidade, baixo consumo de memória e desempenho previsível.

Instalação

Para trabalhar com o planejador de tarefas, adicione uma das bibliotecas populares ao Cargo.toml:

[dependencies]tokio = { version = "1", features = ["full"] }

Ou use async-std:

[dependencies]async-std = "1.12"

Depois disso, você pode usar o macro #[tokio::main] ou #[async_std::main] para entrar no contexto assíncrono.

Funções Principais

  • Criação de tarefas: tokio::spawn ou async_std::task::spawn inicia uma future em segundo plano.
  • Aguardando tarefas: join! ou select! permitem aguardar a conclusão de várias tarefas.
  • Canais: tokio::sync::mpsc para transferir dados entre tarefas.
  • Temporizadores: tokio::time::sleep para atrasos e tarefas periódicas.
  • Pool de threads: distribuição automática de tarefas entre threads de trabalho.

Exemplo de Código em Rust

use tokio::time::{sleep, Duration};

#[tokio::main]async fn main() { let handle1 = tokio::spawn(async { sleep(Duration::from_secs(1)).await; println!("Tarefa 1 concluída"); });

let handle2 = tokio::spawn(async { sleep(Duration::from_secs(2)).await; println!("Tarefa 2 concluída"); });

tokio::join!(handle1, handle2); println!("Todas as tarefas concluídas");}

Este código cria duas tarefas paralelas, cada uma aguardando um tempo determinado e, em seguida, exibindo uma mensagem. tokio::join! aguarda a conclusão de ambas.

Quando usar

O planejador de tarefas Rust é ideal para: desenvolvimento de servidores web (por exemplo, com o framework axum), aplicações cliente-servidor, processamento de fluxos de dados, implementação de chatbots, sistemas de monitoramento e qualquer cenário que exija concorrência sem bloqueio. Se sua aplicação trabalha com I/O (rede, arquivos) ou requer o processamento de múltiplas requisições, o planejador de tarefas é a escolha certa.

Recommendations