⚡ Biblioteca: Filamento
Execute tarefas em paralelo sem bloquear o programa principal!
🔄O que é programação assíncrona?
Normalmente, seu programa executa uma linha de cada vez. Com assíncrono, você pode iniciar tarefas que rodam "ao mesmo tempo" sem esperar elas terminarem. Perfeito para operações que demoram, como baixar arquivos ou processar dados grandes.
Diferença de tarefas: "Tarefas" é um conceito geral de operações assíncronas (como promises em outras linguagens). Esta biblioteca implementa tarefas assíncronas usando corrotinas leves, permitindo execução concorrente sem threads pesadas.
Iniciando uma tarefa assíncrona
filamento.tarefa(função() exiba("Esta tarefa roda em paralelo!") filamento.durma(1000) -- Espera 1 segundo exiba("Tarefa terminou!") fim) exiba("Programa principal continua...")
Iniciando o loop de eventos
Para que as tarefas assíncronas sejam executadas, você precisa iniciar o loop de eventos:
filamento.inicie_loop()
Exemplo: Download simulado
exiba("Iniciando downloads...") filamento.tarefa(função() exiba("📥 Baixando arquivo 1...") filamento.durma(2000) exiba("✅ Arquivo 1 baixado!") fim) filamento.tarefa(função() exiba("📥 Baixando arquivo 2...") filamento.durma(1500) exiba("✅ Arquivo 2 baixado!") fim) exiba("Aguardando downloads...") filamento.inicie_loop() exiba("Todos os downloads terminaram!")
filamento.inicie_loop() no final para executar as tarefas!
Exemplo: Simulando tarefas com callbacks
Embora não haja uma biblioteca "tarefa" separada, você pode simular tarefas assíncronas usando corrotinas e callbacks:
função tarefa_simulada(acao, callback) filamento.tarefa(função() local resultado = acao() -- Executa a ação se callback então callback(resultado) -- Chama o callback com o resultado fim fim) fim -- Usando tarefa_simulada( função() filamento.durma(1000) retorne "Download concluído!" fim, função(resultado) exiba(resultado) fim ) filamento.inicie_loop()