Go

Primitivas de sincronización

sync.Mutex, RWMutex, Once, Pool, Map, Cond, operaciones atómicas

22 preguntas de entrevista·
Mid-Level
1

¿Qué es un sync.Mutex en Go?

Respuesta

Un sync.Mutex (mutual exclusion lock) es una primitiva de sincronización que garantiza que solo una goroutine pueda acceder a una sección crítica a la vez. Llamar a Lock bloquea hasta que el mutex esté disponible, y Unlock lo libera para las demás goroutines. Úsalo para proteger el acceso concurrente a datos compartidos.

2

¿Qué ocurre si olvidamos llamar a Unlock después de Lock en un sync.Mutex?

Respuesta

Olvidar Unlock crea un deadlock potencial, ya que las demás goroutines esperarán indefinidamente para adquirir el mutex. La buena práctica es usar defer para garantizar que Unlock se llamará incluso en caso de panic. Asocia siempre Lock y Unlock en el mismo scope para evitar fugas de bloqueo.

3

¿Cuál es la diferencia principal entre sync.Mutex y sync.RWMutex?

Respuesta

El sync.RWMutex permite múltiples lecturas concurrentes mediante RLock pero solo una escritura exclusiva mediante Lock. Esto mejora el rendimiento en escenarios con muchas lecturas, ya que los lectores no se bloquean entre sí. Usa RWMutex cuando las lecturas son frecuentes y las escrituras raras.

4

¿Por qué usar defer con Unlock en un sync.Mutex?

5

¿Cuándo preferir sync.RWMutex frente a sync.Mutex?

+19 preguntas de entrevista

Domina Go para tu próxima entrevista

Accede a todas las preguntas, flashcards, tests técnicos, ejercicios de code review y simuladores de entrevista.

Empieza gratis