Sobes.tech
Junior — Middle

Podes explicar que tipos de bloqueios existem e como eles funcionam na programação multithread?

sobes.tech IA

Resposta da IA

Na programação multithread existem diferentes tipos de bloqueios que ajudam a sincronizar o acesso a recursos partilhados:

  • Mutex (Mutual Exclusion) — garante acesso exclusivo a um recurso. Apenas um thread pode adquirir o mutex de cada vez.
  • Mutex recursivo — permite que o mesmo thread adquira o bloqueio várias vezes sem se bloquear a si próprio.
  • Bloqueio de leitura-escrita (Read-Write Lock) — permite que múltiplos threads leiam o recurso simultaneamente, mas a escrita só é possível de forma exclusiva.
  • Semáforo — limita o número de threads que podem aceder ao recurso ao mesmo tempo.
  • Spinlock (espera ativa) — o thread verifica em ciclo se o bloqueio está disponível, sem passar para um estado de espera.

Exemplo de uso de um mutex em Swift:

let lock = NSLock()

func criticalSection() {
    lock.lock()
    // Seção crítica
    lock.unlock()
}

A escolha do tipo de bloqueio depende da tarefa e dos requisitos de desempenho e segurança.