最終更新日時:
が更新

履歴 編集

function
<shared_mutex>

std::shared_lock::release(C++14)

mutex_type* release() noexcept;

概要

ミューテックスの所有権を放棄する。

この関数を実行することで、shared_lockオブジェクトはミューテックスのアンロック責任を放棄する。この関数を実行したユーザーは、自分でミューテックスをアンロックする必要がある。

事後条件

  • 保持しているミューテックスオブジェクトへのポインタがNULLになること
  • owns_lock() == falseになること

戻り値

保持しているミューテックスオブジェクトへのポインタを返す

例外

投げない

#include <shared_mutex>

int main()
{
  std::shared_timed_mutex mtx;
  {
    std::shared_lock<std::shared_timed_mutex> lock(mtx);

    // lockが保持するミューテックスの所有権を放棄する
    // (lockオブジェクトのデストラクタでunlock_shared()が呼ばれなくなる)
    std::shared_timed_mutex* p = lock.release();

    // 所有権を持つユーザーが、自分でミューテックスのロックを手放す
    p->unlock_shared();
  }
}

出力

バージョン

言語

  • C++14

処理系