GCD (Grand Central Dispatch)

Apr 13 2023
No meu artigo anterior, tentamos entender algumas coisas sobre simultaneidade. Neste artigo, tentaremos obter simultaneidade em nosso aplicativo iOS.

No meu artigo anterior, tentamos entender algumas coisas sobre simultaneidade. Neste artigo, tentaremos obter simultaneidade em nosso aplicativo iOS.
O iOS nos fornece duas APIs que você usará ao tornar seu aplicativo simultâneo 1) GCD (Grand Central Dispatch)
2) Operação

GCD:

É uma API de baixo nível para gerenciar operações simultâneas. Ela pode ajudar a melhorar a capacidade de resposta do seu aplicativo, adiando tarefas computacionalmente caras para segundo plano. É um modelo de simultaneidade mais fácil de trabalhar do que bloqueios e threads.

No GCD trabalhamos com filas. O GCD fornece três tipos de filas.
1) Fila Mian
2) Fila Global
3) Fila Personalizada

Você envia unidades de trabalho para essa fila e o GCD as executa em uma ordem FIFO (primeiro a entrar, primeiro a sair), garantindo que a primeira tarefa enviada seja a primeira iniciada.

É importante ter em mente que, embora as filas sejam baseadas em FIFO, isso não garante que as tarefas sejam concluídas na ordem em que você as enviou. O procedimento FIFO se aplica quando a tarefa começa , não quando ela termina.

Fila Mian:

Usamos principalmente essa fila para atualizar os elementos da interface do usuário. A fila principal é executada no thread principal e é uma fila serial.

A fila serial só pode executar uma tarefa por vez

Tópico principal:

No iOS, o thread principal no qual o processo é iniciado é comumente chamado de thread principal . Este é o encadeamento no qual todos os elementos da interface do usuário são criados e gerenciados. Todas as interrupções relacionadas à interação do usuário são despachadas para o thread da interface do usuário, onde o código do manipulador é escrito, seus IBActionmétodos são todos executados no thread principal.

Executamos nossa tarefa em threads de forma síncrona ou assíncrona de acordo com os requisitos.

Tarefa síncrona

Ao executar uma tarefa de forma síncrona, seu aplicativo aguardará e bloqueará o loop de execução atual até que a execução termine antes de passar para a próxima tarefa.
vamos tentar entender com exemplos

na imagem acima, estamos tentando executar nossa tarefa de forma síncrona usando a sincronização, mas já estamos em um thread principal e temos algumas tarefas pendentes para executar, então o bloco de sincronização nosso thread principal e tentando executar suas tarefas primeiro que nos causam travamento do aplicativo.
agora a questão é como podemos usar a sincronização em nosso projeto se precisarmos?
você pode executar a tarefa de forma síncrona em um thread separado sem bloquear o thread principal. vamos tentar fazer isso

aqui você pode ver a primeira fila síncrona bloquear a segunda fila e executar suas tarefas primeiro, então a segunda fila iniciar a execução, mas este bloco não poderia nos causar uma falha porque executamos nossa fila em um thread diferente que não está bloqueando nosso thread principal

Tarefa assíncrona :

Uma tarefa executada de forma assíncrona será iniciada, mas retornará a execução para seu aplicativo imediatamente. Dessa forma, o aplicativo fica livre para executar outras tarefas enquanto a primeira está em execução.

Fila Global:

Documentação do desenvolvedor da Apple:
retorna a fila global do sistema com a classe de qualidade de serviço especificada.

A fila global é uma fila simultânea com diferentes prioridades: alta, padrão, baixa e segundo plano. A fila de prioridade de segundo plano tem a prioridade mais baixa. Especificamos essas prioridades usando a classe QOS (qualidade de serviço).

As filas simultâneas permitem que várias tarefas sejam executadas ao mesmo tempo. A fila garante que as tarefas comecem na ordem em que você as adiciona. As tarefas podem terminar em qualquer ordem e você não tem conhecimento do tempo que levará para a próxima tarefa começar, nem do número de tarefas em execução em um determinado momento.

QS:

Existem 6 tipos de QOS predefinidos que a apple nos fornece

Documentação do desenvolvedor da Apple
fila global

Fila personalizada:

Você também pode criar filas personalizadas que podem ser seriais ou simultâneas. As solicitações nessas filas terminam em uma das filas globais.
Por padrão, a fila personalizada é serial

Essas são algumas coisas básicas sobre o GCD que estudaremos com mais profundidade em artigos futuros.
Obrigado por ler este artigo, se você tiver alguma dúvida, sinta-se à vontade para perguntar
aqui está meu e-mail: [email protected]