• 互斥体


      1.互斥体不同进程间的“临界区”,跨进程

    #include "stdafx.h"
    #include <windows.h>
    
    int main(int argc, char* argv[])
    {
        //创建一个互斥体
        HANDLE g_hMutex = CreateMutex(NULL, FALSE, (LPCWSTR)"XYZ");//第二参数创建出来是否有信号
                                                                   //等待信号(令牌)
        WaitForSingleObject(g_hMutex, INFINITE);
        for (int i = 0; i < 10; i++)
    
        {
            Sleep(1000);
            printf("B进程的Y线程:%d
    ", i);
        }
        //释放令牌(信号)
        ReleaseMutex(g_hMutex);
    
        return 0;
    }

    互斥体防多开例子:

    // 互斥体.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include <windows.h>
    
    int main()
    {
        //创建一个互斥体
        HANDLE g_hMutex = CreateMutex(NULL, FALSE, (LPCWSTR)"防止多开");//第二参数创建出来是否有信号
        //等待信号(令牌)
    
        DWORD dwRet = GetLastError();
        if (g_hMutex)
        {
            if (ERROR_ALREADY_EXISTS  == dwRet)
            {
                CloseHandle(g_hMutex);
                return 0;
            }
    
        }
        else
        {
            printf("创建失败,程序退出!
    ");
            CloseHandle(g_hMutex);
            return 0;
        }
    
        for (int i =0;i<10;i++)
    
        {
            Sleep(1000);
            printf("A进程的X线程:%d
    ", i);
        }
    
    
        return 0;
    }
  • 相关阅读:
    2、Azure Devops之Azure Boards使用
    1、Azure Devops之什么是Azure DevOps
    MongoDB学习笔记
    首页面作成(二)
    首页面作成(一)
    统计报表的作成(一)
    外派人员责任险项目作成总结
    Hibernate对象的状态
    Javaweb权限管理设计思路
    Ajax详解
  • 原文地址:https://www.cnblogs.com/hanhandaren/p/11139872.html
Copyright © 2020-2023  润新知