Изменить объект блокировки вне критической секции - PullRequest
1 голос
/ 12 января 2012

Предположим, у меня есть следующий код

Rectangle rect = new Rectangle();
lock(rect)
{
  ----
  ---
  ---
}

Можно ли изменить объект rect или его свойства в каком-либо другом потоке, пока один поток получил блокировку и выполняется в критической секции.

1 Ответ

2 голосов
/ 12 января 2012

Можно ли изменить прямоугольный объект или его свойства в каком-либо другом поток, в то время как один поток получил блокировку, и выполняет в критическая секция.

Если все код, который обращается к этому объекту, сначала пытается получить такую ​​же блокировку, то нет.

Без упаковщика кода блокировки, да, другой поток может (и в какой-то момент будет) писать в rect с противоречивыми результатами.

...