在C++中,可以使用CreateMutex
函數來創建一個互斥體對象。以下是CreateMutex
函數的使用方法:
Windows.h
頭文件。#include <Windows.h>
CreateMutex
函數來創建互斥體對象。該函數的原型如下:HANDLE CreateMutex(
LPSECURITY_ATTRIBUTES lpMutexAttributes,
BOOL bInitialOwner,
LPCTSTR lpName
);
其中:
lpMutexAttributes
:一個指向SECURITY_ATTRIBUTES
結構體的指針,指定了新創建的互斥體對象的安全屬性。可以設置為NULL
以使用默認的安全屬性。
bInitialOwner
:一個布爾值,指定了互斥體對象的初始所有者。如果該值為TRUE
,則創建的互斥體對象為有所有權的,并且調用線程將成為該對象的所有者;如果該值為FALSE
,則創建的互斥體對象為無所有權的。
lpName
:一個指向以空字符結尾的字符串的指針,指定了互斥體對象的名稱。名稱可以是本地名稱(形如"Local\\MyMutex"
)或全局名稱(形如"Global\\MyMutex"
)。如果該參數為NULL
,則創建一個未命名的互斥體對象。
HANDLE hMutex = CreateMutex(NULL, FALSE, NULL);
WaitForSingleObject
函數來等待互斥體對象的信號。該函數的原型如下:DWORD WaitForSingleObject(
HANDLE hHandle,
DWORD dwMilliseconds
);
其中:
hHandle
:一個互斥體對象的句柄。
dwMilliseconds
:等待的時間,以毫秒為單位。如果設為INFINITE
,則表示無限等待。
DWORD dwWaitResult = WaitForSingleObject(hMutex, INFINITE);
ReleaseMutex
函數來釋放該對象。該函數的原型如下:BOOL ReleaseMutex(
HANDLE hMutex
);
其中:
hMutex
:一個互斥體對象的句柄。BOOL bResult = ReleaseMutex(hMutex);
注意:在使用完互斥體對象后,需要使用CloseHandle
函數來關閉該對象的句柄,以釋放相關的系統資源。
CloseHandle(hMutex);