次の方法で共有


SpinLock

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

SpinLock は、まだロックを取得していない場合でも、スレッドのタイム スライスを生成する可能性があります。 これは、スレッドの優先度逆転を回避し、ガベージコレクターが作業を進められるようにするために行われます。 SpinLockを使用する場合は、非常に短い期間を超えてロックを保持できるスレッドがなく、ロックを保持している間はスレッドをブロックできないようにします。

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

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

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

こちらも参照ください