O que é a execução de código fora do thread principal?
sobes.tech IA
Resposta da IA
A execução de código fora do thread principal significa realizar tarefas em segundo plano, sem bloquear o thread principal da interface de utilizador da aplicação. Isto permite manter a capacidade de resposta da interface, especialmente durante operações longas ou intensivas em recursos, como pedidos de rede, processamento de dados ou trabalho com ficheiros.
Os mecanismos principais no iOS para executar código fora do thread principal:
-
Grand Central Dispatch (GCD): API de baixo nível baseada em C para gerir a execução paralela de código. Utiliza filas para gerir tarefas.
DispatchQueue.global(qos: .userInitiated).async { // Código que é executado em segundo plano DispatchQueue.main.async { // Código que é executado no thread principal (por exemplo, atualizar a UI) } } -
Queues de Operações (Operation/OperationQueue): Abstração orientada a objetos sobre GCD. Permite criar operações mais complexas, gerir dependências entre elas e cancelá-las.
let operationQueue = OperationQueue() operationQueue.addOperation { // Código que é executado como uma operação } -
Atores (Concorrência): Introduzidos no Swift 5.5 como parte do modelo de concorrência. Garantem acesso seguro ao estado modificável de diferentes threads, prevenindo condições de corrida.
actor DataManager { private var data: [String] = [] func addData(_ item: String) { data.append(item) } } // Uso do ator // Task { // await dataManager.addData("Novo Item") // } -
Threads (Posix/NSThread): Abordagem de baixo nível para criar e gerir threads. Geralmente, não é recomendado usar diretamente no desenvolvimento moderno de iOS devido à complexidade de gestão e potenciais problemas de sincronização.