1. #include "stdafx.h"
  2. #include <string>
  3. #include <iostream>
  4. #include <Windows.h>
  5. using namespace std;
  6.  
  7. HANDLE hMutex = NULL;
  8. int arr[5] = {1, 2, 3, 4, 5};
  9.  
  10. DWORD CALLBACK Thread1(LPVOID Param)
  11. {
  12. while(true)
  13. {
  14. WaitForSingleObject(hMutex, INFINITE);
  15.  
  16. cout << "Thread1:/t";
  17. for (int i = 0; i < 5; i++)
  18. {
  19. cout << arr[i] << ' ';
  20. Sleep(50);
  21. }
  22. cout << endl;
  23.  
  24. ReleaseMutex(hMutex);
  25. }
  26. }
  27.  
  28. DWORD CALLBACK Thread2(LPVOID Param)
  29. {
  30. while(true)
  31. {
  32. WaitForSingleObject(hMutex, INFINITE);
  33.  
  34. cout << "Thread2:/t";
  35. for (int i = 0; i < 5; i++)
  36. {
  37. cout << arr[i] << ' ';
  38. Sleep(50);
  39. }
  40. cout << endl;
  41.  
  42. ReleaseMutex(hMutex);
  43. }
  44. }
  45.  
  46. int main()
  47. {
  48. hMutex = CreateMutex(NULL, FALSE, NULL);
  49. CreateThread(NULL, 0 ,Thread1, NULL, NULL, NULL);
  50. CreateThread(NULL, 0 ,Thread2, NULL, NULL, NULL);
  51. while(true)
  52. {
  53. Sleep(100);
  54. }
  55. return 0;
  56. }

  

互斥是有线程所有权的

hMutex = CreateMutex(NULL, FALSE, NULL);

FALSE:不为任何线程所有,但他现在也是激发的

TRUE:当前的创建线程所有,默认不激发

Mutex的更多相关文章

  1. C#各种同步方法 lock, Monitor,Mutex, Semaphore, Interlocked, ReaderWriterLock,AutoResetEvent, ManualResetEvent

    看下组织结构: System.Object System.MarshalByRefObject System.Threading.WaitHandle System.Threading.Mutex S ...

  2. std::unique_lock<std::mutex> or std::lock_guard<std::mutex> C++11 区别

    http://stackoverflow.com/questions/20516773/stdunique-lockstdmutex-or-stdlock-guardstdmutex The diff ...

  3. WPF整理-Mutex确保Application单例运行

    有时我们不希望我们的WPF应用程序可以同时运行有多个实例,当我们试图运行第二个实例的时候,已经运行的实例也应该弹出来. 我们可以用Mutex来实现 打开App.xaml.cs,在App类中添加如下内容 ...

  4. C#互斥体——Mutex

    Mutex对象是一个同步基元,可以用来做线程间的同步. 若多个线程需要共享一个资源,可以在这些线程中使用Mutex同步基元.当某一个线程占用Mutex对象时,其他也需要占用Mutex的线程将处于挂起状 ...

  5. 多线程相关------互斥量Mutex

    互斥量(Mutex) 互斥量是一个可以处于两态之一的变量:解锁和加锁.只有拥有互斥对象的线程才具有访问资源的权限.并且互斥量可以用于不同进程中的线程的互斥访问. 相关函数: CreateMutex用于 ...

  6. 锁相关知识 & mutex怎么实现的 & spinlock怎么用的 & 怎样避免死锁 & 内核同步机制 & 读写锁

    spinlock在上一篇文章有提到:http://www.cnblogs.com/charlesblc/p/6254437.html  通过锁数据总线来实现. 而看了这篇文章说明:mutex内部也用到 ...

  7. Mutex 和 Lock

    #include <future> #include <mutex> #include <iostream> #include <string> #in ...

  8. channel vs mutex

    记录许总演讲PPT指出的实践: channel– 本质上是一个 MessageQueue– 非常正统的执行体间通讯设施• sync.Mutex/RWMutex/Cond/etc– 不要把 channe ...

  9. go sync.Mutex 设计思想与演化过程 (一)

    go语言在云计算时代将会如日中天,还抱着.NET不放的人将会被淘汰.学习go语言和.NET完全不一样,它有非常简单的runtime 和 类库.最好的办法就是将整个源代码读一遍,这是我见过最简洁的系统类 ...

  10. 一次Mutex死锁的原因探究

    1.现象    最近项目中调出一个bug,某些时候程序会卡死不动,用windbg进行加载后用 ~*kb 命令列出所有的线程栈调用,发现有多个线程调用 WaitForMultipleObjects 在等 ...

随机推荐

  1. UVA 572 (dfs)

    题意:找出一块地有多少油田.'@'表示油田.找到一块就全部标记. #include<cstdio> #define maxn 110 char s[maxn][maxn]; int n,m ...

  2. Codeforces Round #294 (Div. 2) D. A and B and Interesting Substrings

    题意: 对于26个字母 每个字母分别有一个权值 给出一个字符串,找出有多少个满足条件的子串, 条件:1.第一个字母和最后一个相同,2.除了第一个和最后一个字母外,其他的权和为0 思路: 预处理出sum ...

  3. SpringMVC——文件上传

    ----------------------------------------------------------------------------spring.xml-------------- ...

  4. linux 并发 RCU

    What is RCU, Fundamentally? https://lwn.net/Articles/262464/ If you can fill the unforgiving secondw ...

  5. alibaba-dexposed 原理解析

    alibaba-dexposed 原理解析 使用参考地址: http://blog.csdn.net/qxs965266509/article/details/49821413 原理参考地址: htt ...

  6. 《winform窗体应用程序》----------简易记事本

    首先先给大家发表几张图片,描述一下记事本程序要实现的功能以及界面设计. 以上这些就是简易记事本的的主界面设计. 下面我们来做一些简单的讲解: 1.使用MenuStrip控件来实现菜单栏的基本设计. 在 ...

  7. [zz] ROC曲线

    wiki https://zh.wikipedia.org/wiki/ROC%E6%9B%B2%E7%BA%BF 在信号检测理论中,接收者操作特征曲线(receiver operating chara ...

  8. Mybatis原理分析之二:框架整体设计

    1.引言 本文主要讲解Mybatis的整体程序设计,理清楚框架的主要脉络.后面文章我们再详细讲解各个组件. 2.整体设计 2.1 总体流程 (1)加载配置并初始化       触发条件:加载配置文件 ...

  9. svn 权限配置

    svnserve.conf开启权限 auth中以下设置 重启SVN服务

  10. Install Maya 2015 x64 in CentOS 7

    Thanks for Must(QQ ID)'s big help for installing Maya in CentOS7. This is my steps for installing ma ...