mutex の特性

mutex に精通すると、さまざまな mutex 属性を使い分けることができます。mutex 属性は、汎用性と効率性のトレードオフに関わるため、いくつか知っておくと便利です。適切な属性を選択することにより、パフォーマンスの向上に役立ちます。mutex の特性を次に説明します。下記の表の要約も参照してください。

次は、mutex の動作の概要です。

mutex の特徴と動作

mutex

スケーラブル

フェア

再帰

長い待機

サイズ

mutex

OS 依存

OS 依存

X

ブロック

3 ワード以上

recursive_mutex

OS 依存

OS 依存

ブロック

3 ワード以上

spin_mutex

X

X

X

イールド

1 バイト

speculative_spin_mutex

HW 依存

X

X

イールド

2 キャッシュライン

queuing_mutex

X

イールド

1 ワード

spin_rw_mutex

X

X

X

イールド

1 ワード

speculative_spin_rw_mutex

HW 依存

X

X

イールド

3 キャッシュライン

queuing_rw_mutex

X

イールド

1 ワード

null_mutex[6]

null_rw_mutex

[5] イールドは、Microsoft® Windows® システムでは SwitchToThread()、別のシステムでは sched_yield() で実装されます。

[6] null mutex はスタベーションを起こさないため、インテル® TBB ではフェアと見なされています。非スタティックなデータメンバーはありません。