最終更新日時: 2025年07月12日 02時16分44秒 (JST)
Koichi Murase が更新

履歴 編集

function
<mutex>

# std::unique_lock::owns_lock(C++11)

    bool owns_lock() const noexcept;

## 概要

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

## 戻り値

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

## 例外

投げない

## 例

    #include <cassert>
    #include <mutex>

    int main()
    {
      std::mutex mtx;
      {
        std::unique_lock<std::mutex> lk(mtx);

        // コンストラクタでロック取得されるのでowns_lock() == true
        assert(lk.owns_lock());
      }

      {
        std::unique_lock<std::mutex> lk(mtx, std::defer_lock);

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

        lk.lock();

        // ロック取得後なのでowns_lock() == true
        assert(lk.owns_lock());
      }
    }

### 出力

## バージョン

### 言語

- C++11

### 処理系

- Clang: ??
- GCC: 4.7.0 ✅
- ICC: ??
- Visual C++: 2012 ✅, 2013 ✅, 2015 ✅

## 参照