speculative_spin_mutex クラス

概要

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

構文

class speculative_spin_mutex;

ヘッダー

#include "tbb/spin_mutex.h"

説明

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

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

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

注意

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

注意

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

注意

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

参考資料

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

メンバー

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

関連情報