Возможно ли .NET-потоку каким-то образом прекратить выполнение между временем, которое возвращает метод, и временем, когда его возвращаемое значение присваивается переменной / полю?Конечно, возможно завершение всего процесса или выключение машины, но возможно ли это, если процесс продолжает работать?
Например:
class Test
{
public static readonly Mutex MyMutex = new Mutex(false);
public static bool MutexAcquired = false;
private static bool AcquireMutex() => MyMutex.WaitOne(1000);
public static void DoSomething()
{
MutexAcquired = AcquireMutex();
}
}
Возможно ли эточто выполнение DoSomething()
получит мьютекс (WaitOne
возвращает true), но что-то прервет поток, прежде чем значение MutexAcquired
изменится с false
на true
(но процесс как-то продолжает выполняться, так что что-то еще можетчитать неправильное значение MutexAcquired
)?Было бы что-то другое, если бы MutexAcquired
был локальным вместо поля?
(я понимаю, что, как написано, метод AcquireMutex
, вероятно, будет встроенным, но давайте предположим, что он более сложный на практике,так что это не встроено.)