windows实现互斥量同步
时间: 2023-07-11 14:50:45 浏览: 95
在 Windows 中,可以使用互斥量(Mutex)来实现同步。互斥量是一种同步对象,它可以用于协调多个线程对共享资源的访问。当一个线程需要访问共享资源时,它会请求互斥量的所有权。如果互斥量当前没有被占用,则该线程会获得互斥量的所有权,并可以访问共享资源。如果互斥量已经被占用,则该线程会被阻塞,直到互斥量的所有者释放了它。
以下是使用互斥量实现同步的示例代码:
```c
#include <windows.h>
HANDLE hMutex; // 互斥量句柄
int main()
{
// 创建互斥量
hMutex = CreateMutex(NULL, FALSE, NULL);
if (hMutex == NULL)
{
// 创建失败
return 1;
}
// 获取互斥量的所有权
WaitForSingleObject(hMutex, INFINITE);
// 访问共享资源
// 释放互斥量的所有权
ReleaseMutex(hMutex);
// 关闭互斥量
CloseHandle(hMutex);
return 0;
}
```
在上面的示例中,通过调用 CreateMutex 函数创建了一个互斥量,并通过 WaitForSingleObject 函数获取了互斥量的所有权。在获取到所有权后,可以访问共享资源。在访问完成后,通过调用 ReleaseMutex 函数释放互斥量的所有权。最后,通过调用 CloseHandle 函数关闭互斥量句柄。
阅读全文