スレッドセーフカウンターに適した方法を選択する:volatile
、Interlocked
、またはLock
マルチスレッドアプリケーションで共有カウンターを管理するには、スレッドの安全性を慎重に検討する必要があります。 3つの主要な手法が存在します。volatile
キーワードを使用して、Interlocked
クラスを採用し、ロックを利用します。各アプローチを調べてみましょう
キーワード:volatile
単独でvolatile
はvolatile
原子性を保証しません。 スレッドは依然として操作をインターリーブする可能性があり、その結果、カウンター値が不正確になります。したがって、スレッドセーフカウンターには適していません。
volatile
Interlocked
クラスは、Atomic Read-Modify-Write操作を提供します。 各メソッドは、単一の途切れやすい指示として実行され、人種の状態を防ぎます。 これにより、
Interlocked
locks:Interlocked
ロック(例:ステートメントの使用)コードの重要なセクションへのアクセスをシリアル化します。 一度にロックされたコードを実行できるスレッドは1つだけで、スレッドの安全性を保証します。 ただし、ロックは、特にカウンター増分などの頻繁で簡単な操作のために、パフォーマンスオーバーヘッドを導入します。 カウンターの場合、パフォーマンスが優れているため、ロックよりも一般的に好まれます。
概要:lock
Interlocked
スレッドセーフカウンターの構築の場合、
以上が揮発性、インターロック、またはロック:スレッドセーフカウンターに最適ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。