Mutexクラスの仕組みを理解するのに少し混乱しています。
複数のタスクによって実行されるようなコードがあるとします。
bool lockAcquired = mutex.WaitOne();
try
{
sharedVar += 1;
}
finally
{
if (lockAcquired) mutex.ReleaseMutex();
}
私の理解 (間違っている場合は訂正してください) に達した瞬間mutex.WaitOne()、最初に別のスレッドが実行されるのを待っReleaseMutex()てから、後続のステートメントを実行します。try..finallyしたがって、別のスレッドがロックを持っている場合は、ステートメントを続行して実行しません。ロックを取得すると、次のコードの実行に進みます。lockAcquiredその時になりますtrue。私の質問は、ロックが取得されたときにのみ実行される場合、ステートメント内にあるlockAcquiredかどうかを確認する必要があるのはなぜですか。ブロック内のステートメントが常に実行されることを意味します。ありがとう。truefinallyiffinally