Я читаю книгу о C #, я знаю, для чего используется критический раздел, однако этот пример был в книге, и это меня смущает:
public bool BankTransferWithMutex(int amount)
{
bool result = false;
MyMutex.WaitOne();
if (Balance >= amount)
{
Balance -= amount;
result = true;
}
MyMutex.ReleaseMutex();
//My question is here..
return result;
}
}
Мой вопрос заключается в следующем: представьте, что было два потока, один из которых получил доступ к мьютексу, и банковский перевод успешно установил переменную результата в значение true.. если появился другой поток (до того, как первый вернет и введет этот метод он сразу поставил бы результат = ложь. Будет ли первый поток иметь переменную результата, измененную и, следовательно, вернувшую бы ложь, несмотря на успешный банковский перевод? Делая состояние объекта несогласованным??
Спасибо за уделенное время :)
result
— это локальная переменная, а не общая. Скажите, какую книгу вы читаете? Я предлагаю вам прочитать другую книгу. - person Hamlet Hakobyan   schedule 31.01.2015