セマフォを使用して単純なルーチンを実装しようとしていますが、アプリケーションのインスタンスを3つしか実行できません。私は3つのミューテックスを使うことができましたが、これは今までこれを試した良いアプローチではありません。セマフォを使用するアプリケーションのインスタンスを3つしか許可しない
var
hSem:THandle;
begin
hSem := CreateSemaphore(nil,3,3,'MySemp3');
if hSem = 0 then
begin
ShowMessage('Application can be run only 3 times at once');
Halt(1);
end;
私はこれを正しく行うことができますか?
偉大なコーダー、素晴らしい答え。ありがとう! – opc0de
+1「SyncObjs.TSemaphore」は時間切れの待ち時間に対応していません。それとも、私は何かが恋しいですか? –
D2007はSyncObjs.TSemaphoreも持っていません... XEでは正しいのですが、Linuxではタイムアウト0で待ちますが、Windowsでは待ちません。 Stupid – gabr