Какой смысл использовать нестатическую локальную переменную в блокировке?

пару раз я сталкивался с этим кодом, где локальная переменная в классе ( его не статическая переменная) использовалась в блокировке.

 public class SomeClass
{
    private object obj = new object();
    ....
    ....
    lock(obj)
    {

    }
}

есть ли какая-либо точка блокировки, учитывая, что ее переменные экземпляра?

2 ответов


есть ли какая-либо точка блокировки, учитывая, что ее переменные экземпляра?

несколько потоков могут действовать на одном экземпляре, и для обеспечения безопасности потоков требуется блокировка. Подумайте, например, об общей очереди.


статическая блокировка была бы полезна для управления доступом к статической переменной. Блокировка экземпляра будет полезна для управления доступом к переменной экземпляра.

нет никакого смысла использовать локальный объект блокировки для защиты локальной переменной (если это не захваченная внешняя переменная анонимной функции или итератора), поскольку другие потоки не будут иметь доступа ни к блокировке, ни к переменной.