スピンロックを使用して Mutex コンセプトをモデル化するクラス。ハードウェア・トランザクショナル・メモリー (インテル® トランザクショナル・シンクロナイゼーション・エクステンション (インテル® TSX) など) をサポートするプロセッサーでは、保護されたデータを競合することなく並列に変更できる方法で実装されます。
class speculative_spin_mutex;
#include "tbb/spin_mutex.h"
speculative_spin_mutex は、Mutex コンセプトをモデル化します。フェアではなく、再帰的ではありません。speculative_spin_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 コンセプト」を参照してください。