Back to questions
Junior — Middle
66
Можно ли передать объект типа string в качестве механизма блокировки синхронизации?
Answer from AI
sobes.tech AI
В C# использовать объект типа string в качестве механизма блокировки (lock) не рекомендуется. Причина в том, что строки являются иммутабельными и интернированными (interned) объектами, то есть одинаковые строковые литералы могут ссылаться на один и тот же объект в памяти.
Это может привести к неожиданным блокировкам, если разные части программы используют одинаковые строковые значения для синхронизации, что создаст взаимоблокировки или снизит производительность.
Лучше использовать приватный объект, специально выделенный для блокировки:
private readonly object _lockObj = new object();
public void SomeMethod()
{
lock(_lockObj)
{
// критическая секция
}
}