Sobes.tech
Middle

Може ли се низ користити као објекат за блокирање у конструкцији lock?

sobes.tech АИ

Одговор од АИ

Не се препоручује коришћење стринга као објекта за закључавање (lock) у C#. Иако је технички могуће, стрингови у .NET су immutable (непроменљиви) и могу бити интернирани, што значи да иста литерал стринга може се односити на исти објекат у меморији.

Ово доводи до ризика да различити делови програма случајно користе исту стринг за закључавање, што ће изазвати непредвидиво понашање и проблеме са синхронизацијом.

Прави приступ је коришћење одвојеног приватног објекта за закључавање:

private readonly object _lockObj = new object();

lock(_lockObj)
{
    // критична секција
}

На овај начин, гарантујете да је закључавање контролисано само вашим кодом и не преклапа се са другим деловима програма.