TNB Library
公開メンバ関数 | 全メンバ一覧
CSyncEvent クラス

Event排他管理クラス [詳解]

#include <TnbSync.h>

+ CSyncEvent の継承関係図

公開メンバ関数

 CSyncEvent (bool boIsManualReset=false, bool boIsLock=false, LPCTSTR lpszName=NULL)
 コンストラクタ [詳解]
 
 CSyncEvent (HANDLE hEvent)
 コンストラクタ [詳解]
 
virtual HANDLE GetHandle (void) const
 [取得] Mutexハンドル取得 [詳解]
 
virtual bool Lock (DWORD dwTime=INFINITE) const
 [排他] ロック [詳解]
 
 operator HANDLE (void) const
 [取得] ハンドル取得 [詳解]
 
void Pulse (void)
 [排他] ロック状態にする [詳解]
 
void ToLock (void)
 [排他] ロック状態にする [詳解]
 
virtual void Unlock (void) const
 [排他] アンロック [詳解]
 
virtual ~CSyncEvent (void)
 デストラクタ [詳解]
 

詳解

Event排他管理クラス

EVENTを使った同期を実現します。
覚え書き
別プロセスでも別インスタンスでも同じ名前なら同期が取れます。
同スレッドでもロックできます(デッドロックに注意)。
参照
http://msdn.microsoft.com/library/ja/jpdllpro/html/_win32_createevent.asp
必要ファイル
TnbSync.h
日付
06/04/19 新規作成
06/09/13 コンストラクタの第一デフォルト引数を変更。 Lock状態とシグナル状態の関係を誤っていた。
06/10/31 抽象クラスを使用するように変更。
06/11/15 作成失敗したら スローするように変更。

TnbSync.h479 行目に定義があります。

構築子と解体子

◆ CSyncEvent() [1/2]

CSyncEvent ( bool  boIsManualReset = false,
bool  boIsLock = false,
LPCTSTR  lpszName = NULL 
)
explicit

コンストラクタ

引数
boIsManualResetfalseか省略なら自動リセットオブジェクト、 trueなら手動リセットオブジェクトになります。
boIsLock初期状態。trueならLock状態、省略かfalseならUnlock状態で作成します。
lpszNameEventの名前。省略可能。
例外
CInvalidParamException名前不正など、同期オブジェクトが作成できなかった時、スローされます。

TnbSync.h493 行目に定義があります。

◆ CSyncEvent() [2/2]

CSyncEvent ( HANDLE  hEvent)
explicit

コンストラクタ

引数
hEventCreateEvent()で作成したハンドル
例外
CInvalidParamExceptionNULLハンドルを指定した時、スローされます。

TnbSync.h512 行目に定義があります。

◆ ~CSyncEvent()

virtual ~CSyncEvent ( void  )
virtual

デストラクタ

TnbSync.h522 行目に定義があります。

関数詳解

◆ GetHandle()

virtual HANDLE GetHandle ( void  ) const
virtual

[取得] Mutexハンドル取得

戻り値
ハンドル

CAbstractSyncHandleを実装しています。

TnbSync.h568 行目に定義があります。

◆ Lock()

virtual bool Lock ( DWORD  dwTime = INFINITE) const
virtualinherited

[排他] ロック

引数
dwTimeロックにトライし続けるミリ秒。省略すると無限に待ちます。
戻り値
true成功
false失敗

ISynchronizedを実装しています。

TnbSync.h91 行目に定義があります。

◆ operator HANDLE()

operator HANDLE ( void  ) const
inherited

[取得] ハンドル取得

戻り値
ハンドル

TnbSync.h80 行目に定義があります。

◆ Pulse()

void Pulse ( void  )

[排他] ロック状態にする

覚え書き
一瞬アンロック状態にします。

TnbSync.h556 行目に定義があります。

◆ ToLock()

void ToLock ( void  )

[排他] ロック状態にする

覚え書き
待機はしません。ロックに成功しない可能性も有ります。

TnbSync.h544 行目に定義があります。

◆ Unlock()

virtual void Unlock ( void  ) const
virtual

[排他] アンロック

ISynchronizedを実装しています。

TnbSync.h532 行目に定義があります。