프로세스 간 통신을 구현하는 응용 프로그램을 만들고 있습니다. 이 목적을 위해 잘 작동하는 것으로 보이는 공유 버퍼를 설정했습니다. 이제는 데이터를 읽어야 할 때 데이터 수신 애플리케이션 (freepascal/lazarus로 작성)에게 을 알려주는 데이터 생성 애플리케이션 (C++로 작성)을위한 방법이 필요합니다.Win32 뮤텍스가 대기하지 않습니다.
이 목적으로 뮤텍스를 사용하려고했습니다. Windows API 프로그래밍에 대한 많은 경험이 없습니다.
내 문제는 아래의 FreePascal 코드에서 뮤텍스가 대기하지 않는다는 것입니다. TMutex.Wait() 함수를 호출 할 수는 있지만 오류 또는 아무것도 반환하지 않지만 단순히 기다리지는 않습니다.
생성자 TMutex.Create (sName : AnsiString);
begin
sName : = 'Local \ Mutex'+ sName;
hMutex = CreateMutexA (
전무, // 기본 액세스 처음 소유하지
사실, //
PChar (sName)); // 뮤텍스라는
hMutex = 0 다음
는 ('뮤텍스 생성 실패') Exception.Create 인상 시작하면;
끝;
끝;
소멸자 TMutex.Destroy;
begin
CloseHandle (hMutex);
끝;
절차 TMutex.Wait;
begin
(WaitForSingleObject (hMutex, INFINITE) <) 0이면 ShowMessage ('debug : wait returned returned something');
끝;
절차 TMutex.게시하다;
begin
ReleaseMutex (hMutex);
끝; 사실 처음 소유를 의미 즉시 반환에 너무 기다리고 - 당신은 뒤로 일이True, // initially not owned
: 당신의 문제에서처럼
명명 된 파이프가이 목적으로 개발되었습니다. IPC - 공유 메모리를 통해 - 간편한 ReadFile/WriteFile 기반 API –