HANDLE hMutex = CreateMutex(NULL, FALSE, "MutexToProtectCriticalResource");
时间: 2024-10-07 08:05:28 浏览: 31
在Windows操作系统中,`HANDLE`是处理各种系统资源的通用指针类型,包括互斥量(Mutex)。`CreateMutex`函数用于创建一个新的互斥量对象,其参数解释如下:
1. `NULL`:通常用于指示默认权限,即读取和写入权限。如果不希望用户直接访问,可以传入一个非空的安全描述符来控制权限。
2. `FALSE`:表示初始状态为未锁定。这意味着互斥量创建后是可获取的,其他线程可以尝试获取该锁。
3. `"MutexToProtectCriticalResource"`:这是一个字符串常量,作为互斥量的名称。当你有多个互斥量时,这个名字可以帮助识别特定的资源,例如"保护关键资源的互斥量"。
创建这样的互斥量后,可以通过`WaitForSingleObject(hMutex, ...)`来尝试获取锁。如果互斥量已被其他线程持有,当前线程将被阻塞直到锁可用。一旦获得锁,就可以执行需要保护的关键资源操作,完成后再调用`ReleaseMutex(hMutex)`释放锁,允许其他线程进入。
举个例子:
```c++
// 创建一个名为"CriticalSection"的互斥量
HANDLE hMutex = CreateMutex(NULL, FALSE, "CriticalSection");
// 线程A尝试获取锁
if (WaitForSingleObject(hMutex, INFINITE) == WAIT_OBJECT_0) {
// 锁已获取,可以修改共享资源
// ...
ReleaseMutex(hMutex); // 任务完成后释放锁
} else {
// 锁已被其他线程占用,线程A继续等待
}
```
阅读全文