互斥:    

在操作系统中,许多线程常常需要共享资源,而这些资源往往要求一次只能为一个线程服务(排他性),这种排他性地使用共享资源称为线程间的互斥。

线程互斥实质上也是同步,可以看做一种特殊的线程同步。

Mutex类

线程的互斥常用Mutex类实现,利用它可以对资源进行独占性访问。

与Monitor类相似,只有获取Mutex对象的所属权的线程才能进入临界区,未获得Mutex对象所属权的线程只能在临界区外等待。

使用Mutex类要比使用Monitor类消耗更多的系统资源,但它可以跨越应用程序边界,在多个应用程序之间进行同步。

Mutex类的部分方法:

WaitOne():请求互斥体的所属权,只有请求道所属权后线程才能进入临界区。

ReleaseMutex():释放互斥体的所属权。

OpenExisting():打开现有的已命名互斥体。

Mutex类的使用方法:

Mutex类是非静态类,使用时必须创建一个Mutex对象。

在Mutex类的构造函数中,可以制定互斥锁定是否最初由调用线程拥有,定义互斥锁定的名称,获得互斥锁定是否已存在的信息。

bool  mCreatedNew;

Mutex mutex=new Mutex(false,"ProCSharpMutex",out mCreateNew);

在上面的示例中,第三个参数定义为输出参数,接受一个表示互斥锁定是否为新创建的布尔值。如果返回的值是false,就表示互斥锁定已经定义。

互斥锁定可以在另一进程中定义,因为操作系统知道有名称的互斥锁定,它由不同的进程共享。

如果没有给互斥锁定指定名称,互斥锁定就是未命名的,不在不同的进程之间共享。

线程学习9——Mutex类相关推荐

  1. 在c#中用mutex类实现线程的互斥_C# 多线程系列(4)进程同步Mutex类

    Mutex 类 Mutex 中文为互斥,Mutex 类叫做互斥锁.它还可用于进程间同步的同步基元. Mutex 跟 lock 相似,但是 Mutex 支持多个进程.Mutex 大约比 lock 慢 2 ...

  2. VC++中多线程学习(MFC多线程)一(线程的创建、线程函数如何调用类成员呢?如何调用主对话框的成员?、MFC中的工作线程和界面线程的区别)

    这里废话不多讲了,因为项目原因,需要开启线程进行处理,在不了解线程的情况下,直接百度一下,然后就使用了,结果可想而知,出现了异常,所以花了一天时间系统学习一下多线程,这里主要是针对win32编程方面的 ...

  3. C#之:线程同步 Mutex类

    Mutex(互斥锁): Mutex: 命名空间:System.Threading 一个同步基元,也可用于进程间同步.是.NET Framework 中提供跨多个线程,或多个进程同步访问的一个类.它非常 ...

  4. C#中使用Monitor类、Lock和Mutex类来同步多线程的执行(转)

    C#中使用Monitor类.Lock和Mutex类来同步多线程的执行 在多线程中,为了使数据保持一致性必须要对数据或是访问数据的函数加锁,在数据库中这是很常见的,但是在程序中由于大部分都是单线程的程序 ...

  5. java线程学习-Thread.currentTread().getName()和this.getName()的区别

    很久没有写java程序了,由于为了改变目前的状况,打算花两天时间学习一下java的线程开发和高并发. 线程开发使用thread类,或者runnable接口,而且thread类也是实现了runnable ...

  6. C#线程学习的一点体会和总结

    C#线程学习如同在Java中一样,在c#中写一个多线程应用是非常简单的,本章将介绍如何在c#种开发多线程程序.在.net中线程是由System.Threading 名字空间所定义的.所以你必须包含这个 ...

  7. [转]C#中使用Monitor类、Lock和Mutex类来同步多线程的执行

    C#中使用Monitor类.Lock和Mutex类来同步多线程的执行 在多线程中,为了使数据保持一致性必须要对数据或是访问数据的函数加锁,在数据库中这是很常见的,但是在程序中由于大部分都是单线程的程序 ...

  8. Windows进程与线程学习笔记(二)—— 线程结构体

    Windows进程与线程学习笔记(二)-- 线程结构体 线程结构体 ETHREAD +0x000 Tcb : _KTHREAD 练习 线程结构体 ETHREAD 描述: 每个windows线程在0环都 ...

  9. Windows进程与线程学习笔记(一)—— 进程结构体

    Windows进程与线程学习笔记(一)-- 进程结构体 进程结构体 EPROCESS +0x000 Pcb : _KPROCESS +0x1b0 Peb : Ptr32 _PEB 练习 解题步骤 第一 ...

最新文章

  1. 教你用OpenCV人脸检测自动给头像戴圣诞帽(附代码)
  2. Redis的安装及创建节点、部署群集
  3. Tempter of the Bone(DFS + 奇偶剪枝,好题)
  4. 【Android 安全】DEX 加密 ( Application 替换 | Android 应用启动原理 | LoadedApk 后续分析 )
  5. HTML/CSS——@font-face 规则
  6. soapui模拟桩mockservice---模拟后台服务器
  7. Effective Java之用接口模拟可伸缩的枚举(三十四)
  8. Node.js笔记-使用socket.io构建websocket聊天室
  9. IP得到天气预报(3)———XML中CDATA的提取
  10. leetcode - Anagrams
  11. 亏损208亿,滴滴橙心优选裁员关停!曾融资12亿,最高估值320亿
  12. docker php示例,Docker 编程语言之 PHP
  13. Python Decorator 的来龙
  14. JavaWeb图书馆管理系统
  15. 《炬丰科技-半导体工艺》半导体封装中金丝键合技术
  16. 5.1.2全景声音箱摆位_客厅影院选择7.1还是5.1.2全景声合适,天空音箱点位怎么定...
  17. spring cloud gateway实现https访问
  18. 小记Vue2中百度地图的使用
  19. Qt实现PC端微信中的聊天气泡
  20. 成都理工大学线性代数历年期末试卷题型总结(大题)

热门文章

  1. php登录实现session记住密码,利用php实现一周之内自动登录存储机制(cookie、session、localStorage)...
  2. 计算机签到程序,基于spring boot技术的签到管理系统的设计与实现计算机专业.doc...
  3. functional correspondence by matrix completion
  4. 两个3*3*n旋转矩阵在第三维相乘
  5. DE26 Continuation: Repeated Real Eigenvalues
  6. 老毛桃安装WIN7原版系统
  7. PD2SE-Net:植物病害诊断和严重性评估网络(首次)
  8. 【java】数组异常的处理
  9. mysql5.7.19下载linux_centos7安装 MySQL5.7.19
  10. 计算机网络成绩分析单,【计算机网络论文】计算机网络技术课程教考分离解析(共2033字)...