Sobes.tech
Junior — Middle

Kan een object van het type string worden doorgegeven als synchronisatievergrendelingsmechanisme?

sobes.tech AI

Antwoord van AI

Het wordt niet aanbevolen om een object van het type string te gebruiken als mechanisme voor locking (lock) in C#. De reden is dat strings immutable en interned (interned) objects zijn, wat betekent dat identieke string-literals naar hetzelfde object in het geheugen kunnen verwijzen.

Dit kan leiden tot onverwachte blokkades als verschillende delen van het programma dezelfde string-waarden gebruiken voor synchronisatie, wat deadlocks kan veroorzaken of de prestaties kan verminderen.

Het is beter om een privé-object te gebruiken dat speciaal is gereserveerd voor locking:

private readonly object _lockObj = new object();

public void SomeMethod()
{
    lock(_lockObj)
    {
        // kritische sectie
    }
}