- 声明互斥量:
1 HANDLE mutex = NULL;//指针
- 创建互斥量
1 CreateMutex(NULL, FALSE, NULL);//创建互斥量 互斥量变为1
- 关闭互斥量
1 CloseHandle(mutex);
- 使用互斥量
1 WaitForSingleObject(mutex, INFINITE);//等到互斥量就变为0 2 for (int i = 0; i < 10000; i++) 3 { 4 num++; 5 } 6 ReleaseMutex(mutex);//释放互斥量变为1
完整代码
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <Windows.h> 4 5 int num = 0; 6 7 //创建互斥量 8 HANDLE mutex = NULL;//指针 9 10 DWORD WINAPI add(void *p) 11 { 12 WaitForSingleObject(mutex, INFINITE); 13 for (int i = 0; i < 10000; i++) 14 { 15 num++; 16 } 17 ReleaseMutex(mutex); 18 19 return 0; 20 } 21 22 void main() 23 { 24 mutex = CreateMutex(NULL, FALSE, NULL);//创建互斥量 25 26 HANDLE hd[10]; 27 for (int i = 0; i < 10; i++) 28 { 29 hd[i] = CreateThread(NULL, 0, add, NULL, 0, NULL); 30 } 31 WaitForMultipleObjects(10, hd, TRUE, INFINITE); 32 33 printf("%d", num); 34 35 CloseHandle(mutex); 36 system("pause"); 37 }