nlib
nn::nlib::threading::UniqueLock< T > クラステンプレートfinal

CriticalSection等をラップするためのクラスです。 [詳解]

#include "nn/nlib/threading/CriticalSection.h"

公開型

typedef T mutex_type
 T
 
typedef mutex_type::native_handle_type native_handle_type
 mutex_type::native_handle_type
 

公開メンバ関数

void swap (UniqueLock &rhs) noexcept
 関連付けられているCriticalSection等のオブジェクトをスワップします。 [詳解]
 
void lock () NLIB_ACQUIRE()
 関連付けられたCriticalSection等をロックします。
 
void unlock () noexcept NLIB_RELEASE()
 関連付けられたCriticalSection等をアンロックします。
 
bool try_lock () noexcept NLIB_TRY_ACQUIRE(true)
 関連付けられたCriticalSection等のロックを試みます。
 
bool try_lock_for (const TimeSpan &timeout) noexcept NLIB_TRY_ACQUIRE(true)
 関連付けられたCriticalSection等のタイムアウト付きロックを試みます。
 
bool try_lock_until (const DateTime &abstime) noexcept NLIB_TRY_ACQUIRE(true)
 関連付けられたCriticalSection等のタイムアウト付きロックを試みます。
 
mutex_typerelease () noexcept NLIB_RETURN_CAPABILITY(*locker_)
 関連付けを解除します。アンロックはされません。 [詳解]
 
mutex_typemutex () const noexcept NLIB_RETURN_CAPABILITY(*locker_)
 関連付けられているCriticalSection等のオブジェクトへのポインタを取得します。 [詳解]
 
native_handle_type native_handle () NLIB_RETURN_CAPABILITY(*locker_)
 ロックを表す実装固有のハンドルを返します。
 
bool owns_lock () const noexcept
 UniqueLockに関連付けられたロックがロックされていればtrueを返します。
 
 operator bool () const
 ロックを保持していればtrueを返します。
 
基本的なメンバ関数
 UniqueLock () noexcept
 関連付けなしにオブジェクトを初期化します。
 
 UniqueLock (mutex_type &rhs) NLIB_ACQUIRE(locker_)
 CriticalSection等をロックして、このオブジェクトに関連付けます。 [詳解]
 
 UniqueLock (mutex_type &rhs, AdoptLockType) NLIB_REQUIRES(locker_)
 CriticalSection等が既にロックされていると仮定して、ロックせずにオブジェクトを初期化します。 デストラクタではアンロックされます。 [詳解]
 
 UniqueLock (mutex_type &rhs, DeferLockType) noexcept NLIB_EXCLUDES(locker_)
 ロックせずにオブジェクトを初期化します。 [詳解]
 
 UniqueLock (mutex_type &rhs, TryToLockType)
 初期化の際にtry_lock()でロックを試みます。 [詳解]
 
 UniqueLock (UniqueLock &&rhs) noexcept
 ムーブコンストラクタです。C++11の利用時に有効です。
 
UniqueLockoperator= (UniqueLock &&rhs) noexcept
 ムーブ代入演算子です。C++11の利用時に有効です。
 
 UniqueLock (UniqueLock &rhs, move_tag) noexcept
 ムーブコンストラクタに相当します。
 
UniqueLockassign (UniqueLock &rhs, move_tag) noexcept
 ムーブ代入演算子に相当します。
 

詳解

template<class T>
class nn::nlib::threading::UniqueLock< T >

CriticalSection等をラップするためのクラスです。

テンプレート引数
TCriticalSection等のクラス

CriticalSection.h311 行目に定義があります。

構築子と解体子

◆ UniqueLock() [1/4]

template<class T >
nn::nlib::threading::UniqueLock< T >::UniqueLock ( mutex_type rhs)
inlineexplicit

CriticalSection等をロックして、このオブジェクトに関連付けます。

引数
[in]rhsCriticalSection等のオブジェクト

CriticalSection.h316 行目に定義があります。

◆ UniqueLock() [2/4]

template<class T >
nn::nlib::threading::UniqueLock< T >::UniqueLock ( mutex_type rhs,
AdoptLockType   
)
inline

CriticalSection等が既にロックされていると仮定して、ロックせずにオブジェクトを初期化します。 デストラクタではアンロックされます。

引数
[in]rhsCriticalSection等のオブジェクト

CriticalSection.h320 行目に定義があります。

◆ UniqueLock() [3/4]

template<class T >
nn::nlib::threading::UniqueLock< T >::UniqueLock ( mutex_type rhs,
DeferLockType   
)
inlinenoexcept

ロックせずにオブジェクトを初期化します。

引数
[in]rhsCriticalSection等のオブジェクト

CriticalSection.h322 行目に定義があります。

◆ UniqueLock() [4/4]

template<class T >
nn::nlib::threading::UniqueLock< T >::UniqueLock ( mutex_type rhs,
TryToLockType   
)
inline

初期化の際にtry_lock()でロックを試みます。

引数
[in]rhsCriticalSection等のオブジェクト

CriticalSection.h325 行目に定義があります。

関数詳解

◆ mutex()

template<class T >
nn::nlib::threading::UniqueLock< T >::mutex ( ) const
inlinenoexcept

関連付けられているCriticalSection等のオブジェクトへのポインタを取得します。

戻り値
関連付けられているCriticalSection等のオブジェクトへのポインタ

CriticalSection.h411 行目に定義があります。

◆ release()

template<class T >
nn::nlib::threading::UniqueLock< T >::release ( )
inlinenoexcept

関連付けを解除します。アンロックはされません。

戻り値
関連付けられているCriticalSection等のオブジェクトへのポインタ

CriticalSection.h405 行目に定義があります。

◆ swap()

template<class T >
nn::nlib::threading::UniqueLock< T >::swap ( UniqueLock< T > &  rhs)
inlinenoexcept

関連付けられているCriticalSection等のオブジェクトをスワップします。

引数
[in]rhsスワップするオブジェクト
非推奨:
この関数は将来のリリースにおいて削除されます。

CriticalSection.h357 行目に定義があります。


このクラス詳解は次のファイルから抽出されました: