C++11 には領域ロックlock_guardがあり、2 番目の領域ロックunique_lock があります。
領域ロック lock_guard は比較的簡単に使用でき、コンストラクタ以外のメンバ関数を持たず、領域全体で有効です。
lock_guard の機能に加えて、領域ロック unique_guard はより多くの member_functions を提供し、比較的柔軟です。
unique_guard の最も便利な関数セットは次のとおりです。
関連付けられたミューテックスをロックします (パブリック メンバー関数) |
|
関連付けられたミューテックスをロックしようとし、ミューテックスが利用できない場合は返します (パブリック メンバー関数) |
|
関連付けられたミューテックスのロックを試行し TimedLockable 、指定された期間ミューテックスが利用できなかった場合に返します (パブリック メンバー関数) |
|
関連付けられたミューテックスのロックを試み TimedLockable 、指定された時点に達するまでミューテックスが利用できない場合は返します (パブリック メンバー関数) |
|
関連付けられたミューテックスのロックを解除します |
上記の機能により、ロック/ロック解除を使用してロックの範囲を柔軟に制御し、ロックの粒度を下げることができます。
try_lock_for/try_lock_until により、ロックの待ち時間を制御できますが、このときのロックは楽観的ロックです。
上記は大まかな理解であり、後で新しい洞察が追加されます。