我正在创建一个实现进程间通信的应用程序。 为此,我设置了一个共享缓冲区,这似乎工作正常。 现在,我需要一种数据生成应用程序(使用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