Sobes.tech
Junior — Middle

Qual é a finalidade e o uso das primitivas para sincronização de threads em aplicações multithread?

sobes.tech IA

Resposta da IA

As primitivas de sincronização em aplicações multithread são usadas para coordenar o acesso a recursos partilhados e prevenir condições de corrida.

Tarefas principais:

  • Garantir exclusão mútua (mutex) — para que apenas um thread possa trabalhar com a secção crítica de cada vez.
  • Sincronizar a ordem de execução dos threads (semáforos, variáveis condicionais).
  • Garantir a atomicidade das operações.

No iOS (Objective-C/Swift), usam-se frequentemente:

  • NSLock — um mutex simples.
  • DispatchSemaphore — semáforo para limitar o número de threads a executar simultaneamente.
  • @synchronized (Objective-C) — açúcar sintático para mutex.
  • DispatchQueue — para execução sequencial de tarefas.

Exemplo de uso do NSLock:

let lock = NSLock()

func secçãoCrítica() {
    lock.lock()
    // trabalho com recurso partilhado
    lock.unlock()
}

Assim, as primitivas de sincronização ajudam a evitar erros relacionados com o acesso paralelo e garantem o funcionamento correto das aplicações multithread.