win32多线程互斥量控制执行顺序
时间: 2023-07-18 19:19:39 浏览: 171
Win32多线程中可以使用互斥量(Mutex)来控制执行顺序。互斥量是一个同步对象,用于限制对共享资源的访问。
当一个线程需要访问共享资源时,它必须先获得互斥量的所有权,然后才能访问共享资源。如果资源已经被其他线程占用,则该线程将被阻塞,直到资源可用为止。
以下是使用互斥量实现线程同步的示例:
```c++
#include <Windows.h>
HANDLE hMutex;
DWORD WINAPI ThreadFunc1(LPVOID lpParam) {
// 等待互斥量
WaitForSingleObject(hMutex, INFINITE);
// 访问共享资源
printf("Thread 1 is accessing the shared resource.\n");
// 释放互斥量
ReleaseMutex(hMutex);
return 0;
}
DWORD WINAPI ThreadFunc2(LPVOID lpParam) {
// 等待互斥量
WaitForSingleObject(hMutex, INFINITE);
// 访问共享资源
printf("Thread 2 is accessing the shared resource.\n");
// 释放互斥量
ReleaseMutex(hMutex);
return 0;
}
int main() {
// 创建互斥量
hMutex = CreateMutex(NULL, FALSE, NULL);
// 创建线程
HANDLE hThread1 = CreateThread(NULL, 0, ThreadFunc1, NULL, 0, NULL);
HANDLE hThread2 = CreateThread(NULL, 0, ThreadFunc2, NULL, 0, NULL);
// 等待线程完成
WaitForSingleObject(hThread1, INFINITE);
WaitForSingleObject(hThread2, INFINITE);
// 关闭句柄
CloseHandle(hMutex);
CloseHandle(hThread1);
CloseHandle(hThread2);
return 0;
}
```
在上面的示例中,两个线程都需要访问共享资源,但是只有一个线程可以访问该资源。通过使用互斥量,我们可以确保线程之间的执行顺序。
阅读全文