我正在創建一個實現進程間通信的應用程序。 爲此,我設置了一個共享緩衝區,這似乎工作正常。 現在,我需要一種數據生成應用程序(使用C++編寫) 來告訴數據接收應用程序(用freepascal/lazarus編寫) 何時應該讀取數據。Win32 Mutex不等待
我正在嘗試爲此使用互斥鎖。我沒有太多的Windows API編程經驗。
所以,我的問題是,在下面的FreePascal代碼中,互斥鎖不會等待。我可以調用TMutex.Wait()函數,它不返回任何錯誤或任何錯誤,但它不會等待。
構造函數TMutex.Create(sName:AnsiString);
begin
sName:='Local \ Mutex'+ sName;
hMutex:= CreateMutexA(
爲零,//默認訪問
真,//最初並不擁有
PChar(sName)); //命名互斥
如果hMutex = 0然後
開始
提高Exception.Create( '互斥創建失敗');
end;
end;
析構函數TMutex.Destroy;
begin
CloseHandle(hMutex);
end;
程序TMutex.Wait; (WaitForSingleObject(hMutex,INFINITE)<> 0)then ShowMessage('debug:wait returned something');如果(WaitForSingleObject(hMutex,INFINITE)<> 0)
end;
程序TMutex。帖子;
begin
ReleaseMutex(hMutex);
end;
命名管道是爲此目的而發明的:IPC - 通過共享內存 - 基於方便的基於ReadFile/WriteFile的API – 2009-10-17 20:52:34