仕様
SSemaphore クラスはセマフォをカプセル化したものです。セマフォはOSレベルのイベントオブジェクトなので、
プロセスを超えてユニークです。セマフォに設定されたインクリメントカウンタの値によって、アプリケーションの
多重起動チェックなどが可能です。
ソースコード
SSemaphore.h右クリックで「対象をファイルに保存」でダウンロードしてください。サンプルソースコードもご参考ください。
メソッド
たった一つだけです。
Permit()
セマフォを作成します。同じ名前のセマフォが既に存在する場合はそれを参照します。セマフォに記憶されたインクリメントカウンタが上限に達していなければ
一つカウンタを増し、TRUE を返します。上限に達している場合は設定した時間待機し、それでも上限を下回らない場合はFALSE を返します。なおインスタンスが
破棄される時に、このセマフォのカウンタもデクリメントされます。
// 多重起動をチェックします。
WinMain()
{
SSemaphore ss;
BOOL bPermit = ss.Permit("test", 1);
if (bPermit == FALSE)
{
MessageBox(NULL, "既に起動しています", "Error", MB_OK);
}
else
{
MessageBox(NULL, "起動しました", "Success", MB_OK);
}
}