Объект для блокировки в операторе lock C#

Duser

Client
Регистрация
11.08.2013
Сообщения
286
Благодарностей
192
Баллы
43
Для блокировки участка кода оператором lock C# я использую объект, который есть в общем коде
Код:
lock(CommonCode.SyncObject)
{
      ....
}
А вот, допустим у меня есть несколько кубиков, где нужна такая блокировка. Нужно ли создавать свой SyncObject под каждый lock или можно использовать один CommonCode.SyncObject на всех?
 

SergSh

Client
Регистрация
10.05.2017
Сообщения
541
Благодарностей
395
Баллы
63
Общий lock будет останавливать все работающие потоки и шабы у которых есть этот lock. Если есть записи в разные списки или таблици, то лучше делать разные locks. Одинаковые locks нужен если с одинаковыми списками или таблицами работают шабы.
https://zennolab.com/discussion/threads/osobennosti-ispolzovanija-standartnyx-lockov-dlja-mnogopotoka.44524/
 
  • Спасибо
Реакции: Duser

Duser

Client
Регистрация
11.08.2013
Сообщения
286
Благодарностей
192
Баллы
43
А вот ещё вопрос относительно блокировок.

Нужно ли лочить методы, которые вызываются из кубиков и находятся в CommonCode и которые работают достаточно медленно. У меня там используется класс WebRequest. В классе CommonCode все члены статические. Не будет ли конфликта переменных внутри этого метода, когда несколько потоков попытаются вызвать такой метод?
 

SergSh

Client
Регистрация
10.05.2017
Сообщения
541
Благодарностей
395
Баллы
63
можно попробовать убрать static из метода и вызывать
Код:
CommonCode code = new CommonCode();
code.тут наз. метода(тут параметры);
Если знающие поправят, буду благодарен
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)