我对理解Mutex课程的运作方式有点困惑。
假设我有一个这样的代码将由多个任务执行:
bool lockAcquired = mutex.WaitOne();
try
{
sharedVar += 1;
}
finally
{
if (lockAcquired) mutex.ReleaseMutex();
}
我的理解(如果我错了,请纠正我)是它到达的那一刻mutex.WaitOne(),它将首先等待另一个线程执行ReleaseMutex(),然后再继续执行后续语句。try..finally因此,如果另一个线程拥有锁,它将不会继续执行该语句。如果它获得了锁,那么这就是它继续执行下一个代码的时间。lockAcquired届时true。我的问题是,如果只有在获取锁时才会执行,为什么我需要检查语句lockAcquired是否true在语句中。finally这意味着块if内的语句finally将始终被执行。谢谢。