Первое правило. Блокировка с использованием объекта, который недоступен извне класса. Вот почему this
и различные typeof
являются плохой идеей. Внешний код может помешать вашим замкам. Тогда вопрос в том, что это за lock
. Если оно статическое, тогда используйте статическое поле, в противном случае используйте поле экземпляра.
Чтобы выбрать правильный lock
объект, вы должны идентифицировать группы кода, которые являются взаимоисключающими. Так что если у вас есть 4 метода, которые являются эксклюзивными в парах, таких как A и B, C и D, у вас должно быть 2 разных lock
объекта, а не 1.