Middle
Може ли се низ користити као објекат за блокирање у конструкцији lock?
sobes.tech АИ
Одговор од АИ
Не се препоручује коришћење стринга као објекта за закључавање (lock) у C#. Иако је технички могуће, стрингови у .NET су immutable (непроменљиви) и могу бити интернирани, што значи да иста литерал стринга може се односити на исти објекат у меморији.
Ово доводи до ризика да различити делови програма случајно користе исту стринг за закључавање, што ће изазвати непредвидиво понашање и проблеме са синхронизацијом.
Прави приступ је коришћење одвојеног приватног објекта за закључавање:
private readonly object _lockObj = new object();
lock(_lockObj)
{
// критична секција
}
На овај начин, гарантујете да је закључавање контролисано само вашим кодом и не преклапа се са другим деловима програма.