Middle
Kan een string worden gebruikt als object voor locking in de lock-constructie?
sobes.tech AI
Antwoord van AI
Het wordt niet aanbevolen om een string te gebruiken als object voor locking (lock) in C#. Hoewel dit technisch mogelijk is, zijn strings in .NET onveranderlijk (immutable) en kunnen ze worden geïnterned, wat betekent dat identieke string-literals naar hetzelfde object in het geheugen kunnen verwijzen.
Dit brengt het risico met zich mee dat verschillende delen van het programma per ongeluk dezelfde string gebruiken om te vergrendelen, wat leidt tot onvoorspelbaar gedrag en synchronisatieproblemen.
De juiste aanpak is het gebruik van een apart privé-object voor de lock:
private readonly object _lockObj = new object();
lock(_lockObj)
{
// kritische sectie
}
Op deze manier garandeer je dat de lock alleen door jouw code wordt gecontroleerd en niet overlapt met andere delen van het programma.