mutex

[mutex.mutex]

mutex は、適応型アプローチによってミューテックスの要件をモデル化するクラスであり、ロックが取得できないスレッドがブロックする前にスピンすることを保証します。mutex クラスは、ISO C++ 標準の [thread.mutex.requirements] セクションで説明されるミューテックスの要件をすべて満たしています。mutex クラスは、フェアではなく再帰的ではありません。


// <oneapi/tbb/mutex.h> ヘッダーで定義 

namespace oneapi { 
    namespace tbb { 
        class mutex { 
        public: 
            mutex() noexcept; 
            ~mutex(); 

            mutex(const mutex&) = delete; 
            mutex& operator=(const mutex&) = delete; 

            class scoped_lock; 

            void lock(); 
            bool try_lock(); 
            void unlock(); 

            static constexpr bool is_rw_mutex = false; 
            static constexpr bool is_recursive_mutex = false; 
            static constexpr bool is_fair_mutex = false; 
        }; 
    } 
}

メンバークラス

class scoped_lock

scoped_lock クラスに相当します。Mutex の要件参照してください。

メンバー関数

mutex()

アンロック状態の mutex を構築します。


~mutex()

アンロックされた mutexを破棄します。


void lock()

ロックを取得します。待機に適用型ロジックを使用するため、一定時間のビジー状態が経過した後にブロックされます。


bool try_lock()

ロック (非ブロッキング) の取得を試みます。成功すると true を、それ以外は false を返します。


void unlock()

スレッドが保持するロックを解放します。