Я понимаю, что блокировка .net гарантирует, что только один поток выполняет строки кода, найденные в пределах области блокировки.Является ли .Net Lock (контекст) атомом?
Я не понимаю, является ли замок атомарным. Можно ли прервать поток при выполнении заблокированного кода?
Например - Мне кажется, что если замок не атомный, то следующий код не поточно:
Class example
{
private int myNumber;
private object context = new object();
void Write()
{
myNumber--;
}
void WriteLock()
{
lock (context)
{
myNumber++;
print(myNumber);
}
}
}
Если поток А peforms метода блокировки записи() и прерывается, потому что поток B выполняет Write(), тогда myNumber может быть изменен небезопасно. Я прав?
Почему бы не попробовать его в многопоточной среде? –