Middle
Wat zijn lock-ers in C#?
sobes.tech AI
Antwoord van AI
lock in C# wordt gebruikt om exclusieve toegang tot een codeblok te garanderen. Het zorgt ervoor dat slechts één thread dat blok tegelijk kan uitvoeren, waardoor race conditions worden voorkomen bij het werken met gedeelde bronnen.
private static readonly object _lockObject = new object(); // Object voor synchronisatie
public void AccessSharedResource()
{
lock (_lockObject) // Object blokkeren
{
// Kritieke sectie: code die exclusieve toegang vereist
// Werken met gedeelde bron (bijvoorbeeld een variabele wijzigen)
} // De lock wordt automatisch vrijgegeven bij het verlaten van het blok
}
Alternatieven en gerelateerde concepten:
Monitor: Biedt fijnmazigere controle over synchronisatie, inclusief methoden zoals Wait, Pulse, PulseAll.Mutex: Wordt gebruikt voor synchronisatie tussen processen, evenals tussen threads binnen hetzelfde proces.Semaphore/SemaphoreSlim: Beperkt het aantal threads dat gelijktijdig toegang kan krijgen tot een bron.ReaderWriterLockSlim: Staat meerdere threads toe om gelijktijdig te lezen, maar slechts één te schrijven.
De keuze van het synchronisatie-mechanisme hangt af van de specifieke taak. lock is een verkorte vorm van het gebruik van Monitor.Enter en Monitor.Exit, en is geschikt voor de meeste eenvoudige synchronisatiegevallen binnen hetzelfde proces.