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

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

#include <TnbSync.h>

+ CSyncSemaphore の継承関係図

公開メンバ関数

 CSyncSemaphore (HANDLE hSema)
 コンストラクタ [詳解]
 
 CSyncSemaphore (LPCTSTR lpszName=NULL, int iMaximumCount=1)
 コンストラクタ [詳解]
 
virtual HANDLE GetHandle (void) const
 [取得] Mutexハンドル取得 [詳解]
 
virtual bool Lock (DWORD dwTime=INFINITE) const
 [排他] ロック [詳解]
 
 operator HANDLE (void) const
 [取得] ハンドル取得 [詳解]
 
LONG Unlock (LONG lCount) const
 [排他] アンロック [詳解]
 
virtual void Unlock (void) const
 [排他] アンロック [詳解]
 
virtual ~CSyncSemaphore (void)
 デストラクタ [詳解]
 

詳解

Semaphore排他管理クラス

Semaphoreを使った同期を実現します。
覚え書き
別プロセスでも別インスタンスでも同じ名前なら同期が取れます。
同スレッドでもロックできます(デッドロックに注意)。
参照
http://msdn.microsoft.com/library/ja/jpdllpro/html/_win32_createsemaphore.asp
必要ファイル
TnbSync.h
日付
06/05/01 新規作成
06/09/19 引数つきのUnlockメソッド、追加。
06/10/31 抽象クラスを使用するように変更。
06/11/15 作成失敗したら スローするように変更。

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

構築子と解体子

◆ CSyncSemaphore() [1/2]

CSyncSemaphore ( LPCTSTR  lpszName = NULL,
int  iMaximumCount = 1 
)
explicit

コンストラクタ

引数
lpszName同期用の名前を指定します。 省略すると別インスタンス同士の同期は取れません。
iMaximumCount同時に実行できる数を指定します。省略すると1です。 同じ名前がすでに作成されている場合、この値は無視されます。
例外
CInvalidParamException名前不正など、同期オブジェクトが作成できなかった時、スローされます。

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

◆ CSyncSemaphore() [2/2]

CSyncSemaphore ( HANDLE  hSema)
explicit

コンストラクタ

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

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

◆ ~CSyncSemaphore()

virtual ~CSyncSemaphore ( void  )
virtual

デストラクタ

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

関数詳解

◆ GetHandle()

virtual HANDLE GetHandle ( void  ) const
virtual

[取得] Mutexハンドル取得

戻り値
ハンドル

CAbstractSyncHandleを実装しています。

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

◆ Lock()

virtual bool Lock ( DWORD  dwTime = INFINITE) const
virtualinherited

[排他] ロック

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

ISynchronizedを実装しています。

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

◆ operator HANDLE()

operator HANDLE ( void  ) const
inherited

[取得] ハンドル取得

戻り値
ハンドル

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

◆ Unlock() [1/2]

LONG Unlock ( LONG  lCount) const

[排他] アンロック

引数
lCountアンロックする数
戻り値
現在の回数

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

◆ Unlock() [2/2]

virtual void Unlock ( void  ) const
virtual

[排他] アンロック

ISynchronizedを実装しています。

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