세마포어를 사용하여 간단한 루틴을 구현하려고합니다. 세마포어를 사용하면 응용 프로그램의 인스턴스를 세 개만 실행할 수 있습니다. 나는 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