我正在开发一个创建两个进程的项目,我想在它们之间规范IPC.
使用createProces函数创建进程,我想使用互斥锁来执行某些IPC.
在Linux中我用信号量做这个,但是我已经读过,对于Windows中的IPC,我必须使用互斥锁.
在Windows中我似乎无法让它工作.首先,我创建这样的踏板:
CreateProcess(IpApplicationName, NULL, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &StartInfo, &ProcessInfo);
CreateProcess(IpApplicationName, NULL, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &StartInfo2, &ProcessInfo2);
进程启动正常,但是当我从一个进程中删除releaseMutex调用时,它将不会在该进程中等待.这是流程一:
volatile HANDLE hMutex; // Global hMutex Object
int main()
{
hMutex=CreateMutex(NULL,FALSE,NULL);
while(1)
{
WaitForSingleObject(hMutex,INFINITE);
printf("Thread writing to database...\n");
Sleep(2000);
ReleaseMutex(hMutex);
}
return 0;
}
在过程二中,我打开互斥锁,打开互斥锁并注释releaseMutex(这样它就会卡在这里,进行测试.但是它会继续运行):
int main()
{
while(1)
{
HANDLE hMutex;
hMutex=OpenMutex(MUTEX_ALL_ACCESS,FALSE,MUTEXNAME);
WaitForSingleObject(hMutex,INFINITE);
printf("Thread writing to database22...\n");
Sleep(2000);
//ReleaseMutex(hMutex);
}
return 0;
}
谁能告诉我我做错了什么?
解决方法:
您使用CreateMutex创建匿名互斥锁,然后尝试按名称查找它