Junior — Middle
Може ли се објекат типа string проследити као механизам за блокирање синхронизације?
sobes.tech АИ
Одговор од АИ
U C# nije preporučljivo koristiti objekat tipa string kao mehanizam za zaključavanje (lock). Razlog je što su stringovi imutabilni i internirani (interned) objekti, što znači da isti literali stringova mogu referisati na isti objekat u memoriji.
Ovo može dovesti do neočekivanih zaključavanja ako različiti delovi programa koriste iste vrednosti stringova za sinhronizaciju, što može izazvati međuzaključavanja ili smanjiti performanse.
Bolje je koristiti privatni objekat, posebno rezervisan za zaključavanje:
private readonly object _lockObj = new object();
public void SomeMethod()
{
lock(_lockObj)
{
// kritična sekcija
}
}