WIL説明書(C++)  3.0.0
全メンバ一覧 | 公開メンバ関数 | 限定公開変数類
FVCL::CFvScopedMutex クラス

スコープ内排他制御クラス [詳解]

詳解

スコープ内排他制御クラス

namespace FVCL

スコープを抜けた際に自動的に同期オブジェクトのロックを解除する機構です。

必要条件:
ヘッダー: FVCLbasic.h
サンプルコード:
下記のコードは、関数の先頭で同期オブジェクトがロックされ、 関数を抜ける際に自動的にロック解除されます。
class CMyClass
{
public:
INT GetData( INT level ) const;
INT SetData( INT level, INT data );
protected:
CFvMutex m_Mutex;
INT m_Data[4];
};
INT CMyClass::GetData( INT index ) const
{
CFvScopedMutex scope( m_Mutex, true ); // Lock
if( !(0 <= index && index < 4) )
return -1; // Unlock
return m_Data[index]; // Unlock
}
INT CMyClass::SetData( INT index, INT data )
{
CFvScopedMutex scope( m_Mutex, true ); // Lock
if( !(0 <= index && index < 4) )
return -1; // Unlock
return (m_Data[index] = data); // Unlock
}

+ FVCL::CFvScopedMutex の継承関係図

公開メンバ関数

 CFvScopedMutex (CFvMutex &mutex, bool blLock)
 コンストラクタ [詳解]
 
virtual ~CFvScopedMutex ()
 デストラクタ [詳解]
 
void Lock ()
 ロック [詳解]
 
bool Trylock (INT iSleep=0)
 ロック試行 [詳解]
 
void Unlock ()
 ロック解除 [詳解]
 
- 基底クラス FVCL::CFvObject に属する継承公開メンバ関数
 CFvObject ()
 標準のコンストラクタ [詳解]
 
virtual ~CFvObject ()
 デストラクタ [詳解]
 
INT SetErrorCode (INT err)
 エラーコードの設定 [詳解]
 
INT SetErrorCode (INT err) const
 エラーコードの設定 [詳解]
 
INT GetErrorCode () const
 エラーコードの取得 [詳解]
 
bool SetAllocateOption (INT value)
 画像領域確保時のオプションの設定 [詳解]
 
INT GetAllocateOption () const
 画像領域確保時のオプションの取得 [詳解]
 
void * operator new (size_t uiSize)
 new オペレータ [詳解]
 
void * operator new[] (size_t uiSize)
 new[] オペレータ [詳解]
 
void operator delete (void *pvObject)
 delete オペレータ [詳解]
 
void operator delete[] (void *pvObject)
 delete[] オペレータ [詳解]
 
void * operator new (size_t uiSize, LPCSTR szFileName, INT iLine)
 new オペレータ [詳解]
 
void * operator new[] (size_t uiSize, LPCSTR szFileName, INT iLine)
 new[] オペレータ [詳解]
 
void operator delete (void *pvObject, LPCSTR szFileName, INT iLine)
 delete オペレータ [詳解]
 
void operator delete[] (void *pvObject, LPCSTR szFileName, INT iLine)
 delete[] オペレータ [詳解]
 
virtual CFvObjectoperator= (const CFvObject &src)
 代入オペレータ [詳解]
 
virtual bool operator== (const CFvObject &src) const
 比較オペレータ (==) [詳解]
 
virtual bool operator!= (const CFvObject &src) const
 比較オペレータ (!=) [詳解]
 

限定公開変数類

CFvMutexm_Mutex
 同期オブジェクト [詳解]
 
UINT m_Spin
 ロックカウンタ [詳解]
 
- 基底クラス FVCL::CFvObject に属する継承限定公開変数類
INT m_ErrorCode
 エラーコード [詳解]
 
INT m_AllocateOption
 画像領域確保時のオプション [詳解]
 

その他の継承メンバ

- 基底クラス FVCL::CFvObject に属する継承静的公開メンバ関数
static bool SetDefaultAllocateOption (INT value)
 既定の画像領域確保時のオプションの設定 [詳解]
 
static INT GetDefaultAllocateOption ()
 既定の画像領域確保時のオプションの取得 [詳解]
 
- 基底クラス FVCL::CFvObject に属する継承限定公開メンバ関数
INT fnCPUCheck ()
 CPU情報の取得 [詳解]
 

構築子と解体子

FVCL::CFvScopedMutex::CFvScopedMutex ( CFvMutex mutex,
bool  blLock 
)

コンストラクタ

標準のコンストラクタです。

引数
[in]mutex同期オブジェクト
[in]blLockロックの支持
解説:
blLock に true を指定された時は、同期オブジェクトをロックします。 false の時は何も行いません。 同期オブジェクトはメンバ変数に保管され、 このクラスが開放される際にロック解除されます。
FVCL::CFvScopedMutex::~CFvScopedMutex ( )
virtual

デストラクタ

コンストラクタの引数に渡された同期オブジェクトをロック解除します。

関数詳解

FVCL::CFvScopedMutex::Lock ( )

ロック

同期オブジェクトをロックします。

解説:
ロックされていないか同一スレッドがロックしている場合はロックは成功し直ちに戻ります。 別のスレッドが既にロックしている場合は、解除されるまで無限に待機します。 ロックが成功すると、メンバ変数(m_Spin)がインクリメントされます。
参照
CFvMutex::Lock
FVCL::CFvScopedMutex::Trylock ( INT  iSleep = 0)

ロック試行

同期オブジェクトのロックを試行します。

引数
[in]iSleep待機時間(msec)
解説:
ロックされていないか同一スレッドがロックしている場合はロックは成功し直ちに戻ります。 別のスレッドが既にロックしている場合は、 解除されるか引数に指定した待機時間が経過するまで待機します。 ロックが成功すると、メンバ変数(m_Spin)がインクリメントされます。
参照
CFvMutex::Trylock
FVCL::CFvScopedMutex::Unlock ( )

ロック解除

同期オブジェクトのロックを解除します。

例外
FVCL::CFveBadParamException
解説:
ロックを解除すると、メンバ変数(m_Spin)がデクリメントされます。 m_Spin が 0 の時にロック解除を行うと例外を発行します。
参照
CFvMutex::Unlock

メンバ詳解

CFvMutex * FVCL::CFvScopedMutex::m_Mutex
protected

同期オブジェクト

同期オブジェクトへのポインタを保持します。

UINT FVCL::CFvScopedMutex::m_Spin
protected

ロックカウンタ

このクラスを介してロックされた回数を保持します。


Documentation copyright © 2007 FAST Corporation. [B-001864]
Generated on 2023年11月02日(木) 10時12分57秒 for WIL説明書(C++) by doxygen 1.8.11