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

履歴 編集

function
<shared_mutex>

# std::shared_lock::owns_lock(C++14)

    bool owns_lock() const noexcept;

## 概要

共有ロックを取得しているかを確認する。

## 戻り値

共有ロックを取得済みであれば`true`、そうでなければ`false`を返す。

## 例外

投げない

## 例

    #include <cassert>
    #include <shared_mutex>

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

        // コンストラクタで共有ロックが取得されるので、
        // owns_lock() == true
        assert(lock.owns_lock());
      } // 共有ロックを手放す(shared_lockのデストラクタ)

      {
        std::shared_lock<std::shared_timed_mutex> lock(mtx, std::defer_lock);

        // 遅延ロックのため、コンストラクタで共有ロックが取得されないので、
        // owns_lock() == false
        assert(!lock.owns_lock());

        lock.lock();

        // 共有ロック取得後なので、
        // owns_lock() == true
        assert(lock.owns_lock());
      } // 共有ロックを手放す(shared_lockのデストラクタ)
    }

### 出力

## バージョン

### 言語

- C++14

### 処理系

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