MSDN によると、lock を使用することは monitor を使用することと同等ですが、より簡潔でエラーが発生しにくいとのことです。
簡単な (単一プロセスの) 例を教えてMonitor
くださいlock
。
MSDN によると、lock を使用することは monitor を使用することと同等ですが、より簡潔でエラーが発生しにくいとのことです。
簡単な (単一プロセスの) 例を教えてMonitor
くださいlock
。
簡単な(単一のプロセス)例を教えてください。ロックが不十分なときにモニターを使用せざるを得ないのはなぜですか。
もちろん。ロックを取得できる場合にアクションを実行したいが、他のオブジェクトがすでにロックを所有している場合は、特定の時間より長くブロックしたくないとします。
bool gotMonitor = false;
try
{
Monitor.TryEnter(monitor, 500, ref gotMonitor);
if (gotMonitor)
{
// Okay, we're in the lock. We can do something useful now.
}
else
{
// Timed out - do something else
}
}
finally
{
if (gotMonitor)
{
Monitor.Exit(monitor);
}
}
(私は意図的にオーバーロードを使用していないことに注意してください。オーバーロード は成功/失敗を返すだけです。パラメーターの設定はロック取得に関してアトミックであるため、使用しているバージョンの方が信頼性が高くなります。)TryEnter
ref