Go

Synchronisatieprimitieven

sync.Mutex, RWMutex, Once, Pool, Map, Cond, atomaire operaties

22 gespreksvragen·
Mid-Level
1

Wat is een sync.Mutex in Go?

Antwoord

Een sync.Mutex (mutual exclusion lock) is een synchronisatieprimitief dat garandeert dat slechts één goroutine tegelijk toegang heeft tot een kritieke sectie. Het aanroepen van Lock blokkeert totdat de mutex beschikbaar is, en Unlock geeft hem vrij voor andere goroutines. Gebruik het om gelijktijdige toegang tot gedeelde data te beschermen.

2

Wat gebeurt er als we Unlock vergeten aan te roepen na Lock op een sync.Mutex?

Antwoord

Het vergeten van Unlock veroorzaakt een potentiële deadlock omdat andere goroutines onbeperkt zullen wachten om de mutex te verkrijgen. De beste praktijk is om defer te gebruiken om te garanderen dat Unlock wordt aangeroepen, zelfs bij een panic. Koppel Lock en Unlock altijd in dezelfde scope om lock-lekken te voorkomen.

3

Wat is het belangrijkste verschil tussen sync.Mutex en sync.RWMutex?

Antwoord

De sync.RWMutex staat meerdere gelijktijdige reads toe via RLock maar slechts één exclusieve write via Lock. Dit verbetert de prestaties bij read-intensieve scenario's omdat readers elkaar niet blokkeren. Gebruik RWMutex wanneer reads frequent en writes zeldzaam zijn.

4

Waarom defer gebruiken met Unlock op een sync.Mutex?

5

Wanneer geef je de voorkeur aan sync.RWMutex boven sync.Mutex?

+19 gespreksvragen

Beheers Go voor je volgende gesprek

Krijg toegang tot alle vragen, flashcards, technische tests, code review-oefeningen en gespreksimulatoren.

Begin gratis