Go

Primitivas de sincronização

sync.Mutex, RWMutex, Once, Pool, Map, Cond, operações atômicas

22 perguntas de entrevista·
Mid-Level
1

O que é um sync.Mutex em Go?

Resposta

Um sync.Mutex (mutual exclusion lock) é uma primitiva de sincronização que garante que apenas uma goroutine possa acessar uma seção crítica por vez. Chamar Lock bloqueia até que o mutex esteja disponível, e Unlock o libera para as demais goroutines. Use-o para proteger o acesso concorrente a dados compartilhados.

2

O que acontece se esquecermos de chamar Unlock após Lock em um sync.Mutex?

Resposta

Esquecer Unlock cria um deadlock potencial, pois as demais goroutines esperarão indefinidamente para adquirir o mutex. A boa prática é usar defer para garantir que Unlock será chamado mesmo em caso de panic. Sempre associe Lock e Unlock no mesmo escopo para evitar vazamentos de bloqueio.

3

Qual é a principal diferença entre sync.Mutex e sync.RWMutex?

Resposta

O sync.RWMutex permite múltiplas leituras concorrentes via RLock, mas apenas uma escrita exclusiva via Lock. Isso melhora o desempenho em cenários com muitas leituras, pois os leitores não se bloqueiam mutuamente. Use RWMutex quando as leituras forem frequentes e as escritas raras.

4

Por que usar defer com Unlock em um sync.Mutex?

5

Quando preferir sync.RWMutex em vez de sync.Mutex?

+19 perguntas de entrevista

Domine Go para sua proxima entrevista

Acesse todas as perguntas, flashcards, testes tecnicos, exercicios de code review e simuladores de entrevista.

Comece gratis