1. 程式人生 > >Visual C++網路程式設計經典案例詳解 第3章 多執行緒與非同步套接字程式設計 實現執行緒同步 互斥物件 程式的唯一執行

Visual C++網路程式設計經典案例詳解 第3章 多執行緒與非同步套接字程式設計 實現執行緒同步 互斥物件 程式的唯一執行

互斥物件可在程序中使用 使用者在程序建立互斥物件實現程式例項唯一執行

建立控制檯工程

#include<windows.h>                                //包含標頭檔案
#include<stdio.h>

int main()                                                //主函式
{
    HANDLE hmutex;                                    //定義互斥物件控制代碼
    hmutex=::CreateMutex(NULL,true,"VC網路程式設計");    //建立互斥物件並返回其控制代碼
    if(hmutex)                                        //判斷建立互斥物件是否成功
    {
        if(ERROR_ALREADY_EXISTS==GetLastError())        //獲取錯誤
        {
            printf("只允許一個例項程式執行!\r\n");        //列印相關資訊
        }
        else
        {
            printf("例項程式執行成功!\r\n");
        }
    }
    ::ReleaseMutex(hmutex);                        //釋放互斥物件控制代碼
    ::Sleep(100000);                                //使程式睡眠100秒
    return 0;                                        //程式正常結束
}

輸出 執行兩個視窗 視窗1 例項程式執行成功! 視窗2 只允許一個例項程式執行!

使用者建立互斥物件 使用函式GetLastError()獲取錯誤資訊 獲取到錯誤為ERROR_ALREADY_EXISTS 說明程式有一個例項執行