最終更新日時: 2024年06月11日 22時45分38秒 (JST)
Akira Takahashi が更新

履歴 編集

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

### 処理系

- Clang: 3.5 ✅
- GCC: 4.9 ✅
- ICC: ??
- Visual C++: 2015 ✅