task
*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.
A biblioteca de tarefas permite que funções e threads sejam agendados com o Agendadordo motor .
As funções disponíveis nesta biblioteca geralmente suportam funções e threads.Na maioria dos casos, usar uma função é suficiente, mas para casos mais avançados é recomendado que você se familiarize com a biblioteca coroutine.
Resumo
Funções
Chama/retoma uma função/corrotina imediatamente através do Agendadordo motor.
Chama/reanima uma função/corrotina no final do ciclo de resumo atual.
Agende uma função/corrotina para ser chamada/retomada no próximo Heartbeat após a duração dada (em segundos) ter passado, sem acelerar.
Causa o seguinte código a ser executado em paralelo.
Causa o seguinte código a ser executado em série.
Produz o subprocesso atual sem acelerar.
Cancelar um Subprocesso, impedindo que seja retomado.
Funções
spawn
Aceita uma função ou um subprocesso (como retornado por coroutine.create() ) e o chama/retoma imediatamente através do Agendadordo motor.Argumentos após o primeiro são enviados para a função/thread.
Se o script de chamada estiver atualmente em uma fase de execução serial, então a função ou thread gerada é retomada na fase de execução serial atual.Se o script de chamada estiver atualmente em uma fase de execução paralela, então a função ou thread gerada é retomada na fase de execução paralela atual.Para mais informações, veja Parallel Luau.
Parâmetros
Uma função ou um subprocesso retornado por coroutine.create() .
Argumentos para enviar à função ou ao Subprocesso.
Devolução
O Subprocessoagendado.
defer
Aceita uma função ou um subprocesso (como retornado por coroutine.create() ) e adia até o fim do ponto de retorno atual dentro do quadro atual.
Essa função deve ser usada quando um comportamento semelhante a task.spawn() for desejável, mas o thread não precisa ser executado imediatamente.
Se o script de chamada estiver atualmente em uma fase de execução serial, então a função ou thread adiada é retomada em uma fase de execução serial.Se o script de chamada estiver atualmente em uma fase de execução paralela, então a função ou thread adiada é retomada em uma fase de execução paralela.Para mais informações, veja Parallel Luau.
Parâmetros
Devolução
O Subprocessoagendado.
delay
Aceita uma função ou um subprocesso (como retornado por coroutine.create() ) e agenda-o para ser chamado/retomado no próximo Heartbeat após o período de tempo dado em segundos ter expirado.Argumentos após o segundo são enviados para a função/thread.
Essa função difere da função global obsoleta delay() em que nenhuma aceleração ocorre : no mesmo passo Heartbeat em que passou tempo suficiente, a função é garantida de ser chamada/retomada.Fornecer uma duração de zero ( 0 ) garantirá que a função seja chamada no próximo Heartbeat .
Você pode calcular o tempo real passado ao chamar os.clock() ao agendar e na função agendada.
Se o script de chamada estiver atualmente em uma fase de execução serial, então a função ou thread atrasada é retomada em uma fase de execução serial.Se o script de chamada estiver atualmente em uma fase de execução paralela, então a função ou thread atrasada é retomada em uma fase de execução paralela.Para mais informações, veja Parallel Luau.
Parâmetros
Devolução
O Subprocessoagendado.
desynchronize
Se o script de chamada estiver atualmente em uma fase de execução serial, desynchronize() suspende o script e o script será retomado na próxima fase de execução paralela.Se o script de chamada estiver atualmente em uma fase de execução paralela, desynchronize() retorna imediatamente e não tem efeito.
Apenas scripts que são descendentes de um Actor podem chamar esse método.Se um script fora de um Actor chamar esse método, um erro será levantado.ModuleScripts também pode chamar desynchronize() enquanto a instância do módulo que o chama for exigida por um script que é descendente de um Actor .
Para mais informações, veja Parallel Luau.
Devolução
synchronize
Se o script de chamada estiver atualmente em uma fase de execução paralela, synchronize() suspende o script e o script será retomado na próxima fase de execução serial.Se o script de chamada estiver atualmente em uma fase de execução serial, synchronize() retorna imediatamente e não tem efeito.
Apenas scripts que são descendentes de um Actor podem chamar esse método.Se um script fora de um Actor chamar esse método, um erro será levantado.ModuleScripts também pode chamar synchronize() enquanto a instância do módulo que o chama for exigida por um script que é descendente de um Actor .
Para mais informações, veja Parallel Luau.
Devolução
wait
Produz o subprocesso atual até que a duração dada (em segundos) tenha expirado, então retoma o subprocesso no próximo passo Heartbeat.A quantidade real de tempo decorrido é retornada.
Se nenhuma duração for dada, ela padronizará para zero ( 0 ).Isso significa que o subprocesso retoma no próximo passo, o que é equivalente em comportamento a Class.RunService.Heartbeat:Wait()
Ao contrário da global depreciada wait(), esta função não acelera e garante a retomada do thread no primeiro Heartbeat que ocorre quando for devido.Essa função também retorna apenas o tempo decorrido e nada mais.
Se o script de chamada estiver atualmente em uma fase de execução serial, então o script é retomado em uma fase de execução serial.Se o script de chamada estiver atualmente em uma fase de execução paralela, então o script é retomado em uma fase de execução paralela.Para mais informações, veja Parallel Luau.
Parâmetros
A quantidade de tempo em segundos que deve expirar antes que o thread atual seja retomado.
Devolução
cancel
Cancelar um subprocesso e fechá-lo, impedindo que seja retomado manualmente ou pelo Agendadordo motor.
Essa função pode ser usada com outros membros da biblioteca tarefa que retornam um subprocesso para cancelá-los antes de serem retomados. Por exemplo:
local thread = task.delay(5, function()
print("Hello world!")
end)
task.cancel(thread)
Observe que os subprocessos podem estar em um estado onde é impossível cancelá-los.Por exemplo, o subprocesso atualmente executando e subprocessos que retomaram outra corrotina podem não ser cancelados.Se esse for o caso, um erro será gerado.No entanto, o código não deve depender de estados ou condições de subprocesso específicos que causem falha em task.cancel().É possível que atualizações futuras eliminem essas restrições e permitam que os threads nesses estados sejam cancelados com sucesso.
Parâmetros
O subprocesso que será cancelado.