speculative_spin_rw_mutex クラス

概要

ReaderWriterMutex コンセプトをモデル化するクラス。ハードウェア・トランザクショナル・メモリー (インテル® トランザクショナル・シンクロナイゼーション・エクステンション (インテル® TSX) など) をサポートするプロセッサーでは、保護されたデータを競合することなく並列に変更できる方法で実装されます。

構文

class speculative_spin_rw_mutex;

ヘッダー

#include "tbb/spin_rw_mutex.h"

説明

speculative_spin_rw_mutex は、ReaderWriterMutex コンセプトをモデル化します。フェアではなく、再帰的ではありません。speculative_spin_rw_mutexspin_rw_mutex と似ていますが、次の条件を満たす場合に非スペキュレーティブ・ミューテックスよりも優れたスループットを提供します。

その他の場合は、spin_rw_mutex のように実行されますが、スループットは低下します。

詳細は、「スペキュレーティブ・ロック」セクションを参照してください。

インテル® TSX をサポートするプロセッサーの場合、speculative_spin_rw_mutex は次のような方法で実装されます。

注意

speculative_spin_rw_mutex は、ほかのデータと共有されていない別々のキャッシュラインに各インスタンスが含まれることを保証するため、パディングを行います。このため、ミューテックスのサイズはキャッシュラインのサイズの 3 倍になります。

注意

第 4 世代インテル® Core™ プロセッサー (開発コード名: Haswell) でインテル® TBB バージョン 4.3 の speculative_spin_rw_mutex を実装する場合、ロックを入れ子にするとスペキュレーションが妨げられます。

注意

インテル® TBB のバージョンおよびハードウェアによっては、ほかの制限が適用されることもあります。詳細は、リリースノートを参照してください。

参考資料

『Intel® 64 and IA-32 Architectures Optimization Reference Manual』、資料番号 248966-027、2013 年 6 月、第 12 章。

メンバー

「ReaderWriterMutex コンセプト」を参照してください。

関連情報