windows 互斥锁示例
时间: 2023-09-14 10:12:03 浏览: 49
以下是一个使用 Windows API 中的互斥锁实现互斥访问的示例:
```c
#include <stdio.h>
#include <windows.h>
int main() {
HANDLE hMutex = CreateMutex(NULL, FALSE, "MyMutex");
if (hMutex == NULL) {
printf("互斥锁创建失败\n");
return 1;
}
DWORD dwWaitResult = WaitForSingleObject(hMutex, INFINITE);
switch (dwWaitResult) {
case WAIT_OBJECT_0:
printf("获取到互斥锁\n");
// 访问共享资源
// ...
ReleaseMutex(hMutex);
break;
case WAIT_ABANDONED:
printf("等待互斥锁时被线程终止\n");
break;
default:
printf("等待互斥锁超时\n");
break;
}
CloseHandle(hMutex);
return 0;
}
```
在该示例中,我们首先使用 `CreateMutex` 函数创建了一个互斥锁对象,并将其命名为 `"MyMutex"`。然后使用 `WaitForSingleObject` 函数等待互斥锁,直到获取到锁资源才会继续执行后续代码。在访问共享资源后,我们使用 `ReleaseMutex` 函数释放互斥锁对象。
需要注意的是,若多个线程同时执行该程序,它们将会按照先后顺序依次获取到互斥锁,以此保证对共享资源的互斥访问。