Go

Primitive di sincronizzazione

sync.Mutex, RWMutex, Once, Pool, Map, Cond, operazioni atomiche

22 domande da colloquio·
Mid-Level
1

Che cos'è un sync.Mutex in Go?

Risposta

Un sync.Mutex (mutual exclusion lock) è una primitiva di sincronizzazione che garantisce che una sola goroutine possa accedere a una sezione critica alla volta. Chiamare Lock blocca finché il mutex non è disponibile, e Unlock lo rilascia per le altre goroutine. Usalo per proteggere l'accesso concorrente ai dati condivisi.

2

Cosa succede se dimentichiamo di chiamare Unlock dopo Lock su un sync.Mutex?

Risposta

Dimenticare Unlock crea un potenziale deadlock poiché le altre goroutine attenderanno indefinitamente per acquisire il mutex. La buona pratica è usare defer per garantire che Unlock venga chiamato anche in caso di panic. Abbina sempre Lock e Unlock nello stesso scope per evitare lock leak.

3

Qual è la differenza principale tra sync.Mutex e sync.RWMutex?

Risposta

Il sync.RWMutex consente più letture concorrenti tramite RLock ma una sola scrittura esclusiva tramite Lock. Questo migliora le prestazioni negli scenari con molte letture poiché i lettori non si bloccano a vicenda. Usa RWMutex quando le letture sono frequenti e le scritture rare.

4

Perché usare defer con Unlock su un sync.Mutex?

5

Quando preferire sync.RWMutex rispetto a sync.Mutex?

+19 domande da colloquio

Padroneggia Go per il tuo prossimo colloquio

Accedi a tutte le domande, flashcards, test tecnici, esercizi di code review e simulatori di colloquio.

Inizia gratis