c – 使用互斥锁在两个进程之间调整IPC

我正在开发一个创建两个进程的项目,我想在它们之间规范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创建匿名互斥锁,然后尝试按名称查找它

上一篇:如何同步两个MySQL表?


下一篇:java – 多个实例时的Servlet同步