C++11 における lock_guard と unique_lock の違い

    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 により、ロックの待ち時間を制御できますが、このときのロックは楽観的ロックです。

    上記は大まかな理解であり、後で新しい洞察が追加されます。

    

おすすめ

転載: blog.csdn.net/menggucaoyuan/article/details/40985763