2009-05-05 21 views
1

JDKのConcurrentHashMapは、ロック・ストライピング技術を使用します。ロックのオーバーヘッドを最小限に抑えることは良い考えです。それを利用する他のライブラリやツールはありますか? たとえば、データベースエンジンはそれを使用していますか?ロック・ストライピングの適用領域

この手法が他の領域でそれほど有用でない場合は、その制限は何ですか?

答えて

4

ロックストライピングは、データの整合性を損なうことなく、競合の高いロックを複数のロックに分割する方法がある場合に便利です。これが可能であるかどうかを考えなければならず、必ずしもそうではありません。データ構造も決定に寄与する要素です。したがって、ハッシュテーブルを実装するために大きな配列を使用する場合、ハッシュテーブル全体を同期させるために単一のロックを使用すると、データ構造に順次アクセスするスレッドが発生します。これがハッシュテーブル上の同じ場所であれば、必要ですが、テーブルの両極端にアクセスしている場合はどうなりますか?

ロックストライピングを使用して保存された時間は間違いありません。 scenarioの複数の実行は、実行時間をほぼ半分にします。

ロックストライピングの欠点は、ストライピングの影響を受けるデータ構造の状態を取得することが難しいことです。この例では、テーブル全体のサイズを取得する必要があるため、テーブルのサイズ、またはテーブル全体の一覧表示/列挙が面倒かもしれません。

関連する問題