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.