SpinLock

SpinLock 構造体は、ロックの取得待機中にスピンする下位レベルの相互排他的な同期プリミティブです。 マルチコア コンピューターで、待機時間が短くなると予測され、競合が最小限に抑えられる場合、SpinLock は他の種類のロックよりも優れたパフォーマンスを示すことがあります。 ただし、SpinLock を使用するのは、System.Threading.Monitor メソッドまたは Interlocked メソッドによってプログラムのパフォーマンスが大幅に低下していることがプロファイリングにより判明している場合に限定することをお勧めします。

SpinLock は、ロックをまだ取得していない場合でも、スレッドのタイム スライスを明け渡す可能性があります。 このようにすることで、スレッドの優先順位の逆転を防止し、ガベージ コレクターが処理を進められるようにします。 SpinLock を使用する場合は、スレッドでロックが保持される期間を非常に短くし、ロックの保持中はブロックできないようにしてください。

SpinLock は値型であるため、2 つのコピーで同じロックを参照する場合は、参照渡しで明示的に渡す必要があります。

この型の使用方法の詳細については、「System.Threading.SpinLock」を参照してください。 例については、「方法: 下位レベルの同期に SpinLock を使用する」を参照してください。

SpinLock では、スレッド追跡モードがサポートされています。このモードは開発フェーズで使用でき、特定の時間にロックを保持しているスレッドを追跡するのに役立ちます。 スレッド追跡モードはデバッグに非常に有用ですが、パフォーマンスを低下させる可能性があるため、プログラムのリリース バージョンでは無効にすることをお勧めします。 詳細については、「方法: SpinLock のスレッド追跡モードを有効にする」を参照してください。

参照

その他の技術情報

スレッド処理オブジェクトと機能