• 21.互斥量


    • 声明互斥量:
      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 }
  • 相关阅读:
    循序渐进做项目系列(3):迷你QQ篇(1)——实现客户端互相聊天
    清明时节欲断魂——未知死焉知生?——向死而生!
    curl基本使用
    some tools
    redis源码学习
    设计模式
    object-c基础
    python库
    awk命令
    gcc编译
  • 原文地址:https://www.cnblogs.com/xiaochi/p/8408727.html
Copyright © 2020-2023  润新知