WIN32互斥体CreateMutex以及限制多开

CreateMutex(

LPSECURITY_ATTRIBUTES 【lpMutexAttributes】,    //指向安全属性的指针
BOOL 【bInitialOwner】,    //标志初始所有权
LPCTSTR 【lpName】    //指向mutex对象名称的指针
);
// Mutex0616.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <WINDOWS.H>
int main(int argc, char* argv[])
{
    //创建互斥体
    HANDLE hMutex = CreateMutex(NULL,FALSE,"xyz");
    //获取令牌
    WaitForSingleObject(hMutex,INFINITE);

    for (int i =0;i<10;i++)
    {
        Sleep(1000);
        printf("A进程的X线程:%d\n",i);
    }

    ReleaseMutex(hMutex);

    return 0;
}
// Mutex0616.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <WINDOWS.H>
int main(int argc, char* argv[])
{
    //创建互斥体
    HANDLE hMutex = CreateMutex(NULL,FALSE,"xyz");
    //获取令牌
    WaitForSingleObject(hMutex,INFINITE);
    
    for (int i =0;i<10;i++)
    {
        Sleep(1000);
        printf("B进程的Y线程:%d\n",i);
    }
    
    ReleaseMutex(hMutex);
    
    return 0;
}

 

// Mutex0616.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <WINDOWS.H>
int main(int argc, char* argv[])
{
    //创建互斥体
    HANDLE hMutex = CreateMutex(NULL,FALSE,"xyz");

    DWORD dret = GetLastError();
    if(hMutex)
    {
        if (ERROR_ALREADY_EXISTS == dret)
        {
            CloseHandle(hMutex);
            return 0;
        }
    }
    else
    {
        printf("创建失败!程序退出!");
        CloseHandle(hMutex);
        return 0;
    }
    //获取令牌
    //WaitForSingleObject(hMutex,INFINITE);
    
    for (;;)
    {
        Sleep(1000);
        printf("A进程的X线程\n");
    
    }
    //ReleaseMutex(hMutex);
    
    return 0;
}

 

.

上一篇:在ubuntu 上使用wine 运行Delphi win32 应用


下一篇:[Win32]进程相关API学习笔记