互斥量内核对象 Mutex
互斥量内核对象能够确保一个进程独占对一个资源的访问。互斥量与关键段(线程同步方式)的行为完全相同,当互斥量是内核对象,而关键段是用户模式下的的同步对象
互斥量对象包含: 一个线程 ID ,使用计数和递归计数 。线程 ID 表示当前占用该互斥量的线程 ID ,递归计数表示该线程占用互斥量的次数,使用计数表示使用互斥量对象的不同线程的个数
互斥量规则:1.线程ID为0,则该互斥量不为任何线程占用,处于触发状态 2线程ID非零,则该互斥量被一个线程占用,处于非触发状态 
CreateMutex() bInitialOwner:控制互斥量的初始状态,一般设置为 false ,是互斥量的线程 ID 和递归计数都设为 0 ,表示互斥量不被任何进程占用,处于触发状态,其他进程可以进行调用等待函数,获得该互斥量对象,获得对同步资源的占用。如果初始值设为true ,互斥量的线程 ID 设置为当前线程,递归计数设为 1 ,表示当前线程占用互斥量对象,拥有对同步资源的独占,互斥量处于未触发状态
等待函数在等待互斥量内核对象时,会进行互斥量的线程ID 是否为 0 ,如果为非 0 ,表示互斥量处于未触发状态,等待函数会被阻塞。当另外一个线程将互斥量释放,使其线程 ID 为 0 时,系统会唤醒阻塞的等待函数,把互斥量的线程 ID 设置为它的线程 ID ,使其成为可调度状态 ,递归计数加1,从而该线程占用了互斥量,使其他线程无法执行下去。
ReleaseMutex()当一个线程访问完通过互斥量对象获得的独占资源后,应该调用ReleaseMutex,递归计数减1.
CloseHandle()传入的句柄有效,系统将获得内核对象数据结构的地址,并将结构中的使用计数减1 ,如果使用计数 0 ,就会将内核对象销毁,从内存空间中擦除

windows 互斥量内核对象 Mutex相关推荐

  1. windows笔记-【内核对象线程同步】等待函数

    等待函数可使线程自愿进入等待状态,直到一个特定的内核对象变为已通知状态为止.   WaitForSingleObject 函数 DWORD WaitForSingleObject( HANDLE hO ...

  2. windows笔记-【内核对象线程同步】概述

    用户方式同步的优点是它的同步速度非常快.但它也有其局限性. 例如,互锁函数家族只能在单值上运行,根本无法使线程进入等待状态.可以使用关键代码段使线程进入等待状态,但是只能用这些代码段对单个进程中的线程 ...

  3. windows C/C++ 内核对象、事件对象、信号量

    承接上一篇:https://blog.csdn.net/uVarAndMethod/article/details/90360838 1.内核对象: 进程.线程.文件.文件映射.事件.互斥体等等 2. ...

  4. 【Windows】线程漫谈——线程同步之信号量和互斥量

    本系列意在记录Windwos线程的相关知识点,包括线程基础.线程调度.线程同步.TLS.线程池等 信号量内核对象 信号量内核对象用来进行资源计数,它包含一个使用计数.最大资源数.当前资源计数.最大资源 ...

  5. 经典线程同步 互斥量Mutex的使用分析

    互斥量(mutex)内核对象用来确保一个线程独占对一个资源的访问. 互斥量对象包含一个使用计数.线程ID以及一个递归计数. 互斥量与关键段的行为完全相同.但是,互斥量是内核对象,而关键段是用户模式下的 ...

  6. windows内核对象

    内核对象只是操作系统内核分配的一个内存块,并且只能由操作系统内核访问.该内存块是一种数据结构,它的成员负责维护该对象的各种信息.Windows提供一组函数创建和操作内核对象.调用一个创建内核对象的函数 ...

  7. Windows核心编程学习九:利用内核对象进行线程同步

    注:源码为学习<Windows核心编程>的一些尝试,非原创.若能有助于一二访客,幸甚. 1.程序框架 #include "Queue.h" #include <t ...

  8. 用内核对象进行线程同步

    本章讨论的是如何使用内核对象来对线程进行同步,与用户模式下的同步机制相比,内核对象的用途要广泛的多.实际上,内核对象唯一的缺点就是他们的性能.当我们调用本章任何一个新函数时,调用线程必须从用户模式切换 ...

  9. CreateMutex创建互斥内核对象

    http://blog.sina.com.cn/s/blog_149e9d2ec0102wyr0.html 在编程中我们常使用程序创建一个互斥的内核对象,目的就是为了让这个程序只能运行一次.我们都会有 ...

  10. RT-Thread学习笔记——互斥量

    前言 前面学习了RT-Thread的信号量,但信号量在一些场合使用会存在优先级翻转问题,接下来我们学习互斥量,在 RT-Thread 操作系统中,互斥量可以解决优先级翻转问题,实现的是优先级继承算法. ...

最新文章

  1. 那些年值得铭记的时刻
  2. UITableView 局部刷新
  3. Java断言(assert)
  4. 学Java好不好 要避开哪些雷区
  5. MapReduce案例-wordcount-准备工作
  6. 用css3制作旋转加载动画的几种方法
  7. LVS负载均衡群集(LVS-NAT搭建)
  8. hdu 确定比赛名次
  9. MySQL修改表名示例
  10. PowerDesigner表结构和字段大小写转换
  11. [python]---从java到python(03)---爬虫
  12. php生成不重复时间戳,PHP获取时间戳和微秒数以及生成唯一ID
  13. (oracle)八、表
  14. 51 nod 1521 一维战舰 时间复杂度O(n),同 Codeforces 567D. One-Dimensional Battle Ships 有详细注释...
  15. 日常邮件用语(一)网摘学习
  16. 微信小游戏排行榜设计技术梳理
  17. 免校准的电量计量芯片_电能计量芯片应用心得之选型篇
  18. Team Queue
  19. c#实现 正弦sin、反正弦arcsin,正切tan、反正切arctan:求角度值
  20. 如何使用计算机处理文件夹,电脑打开某些文件夹提示引用了不可用位置怎么解决[多图]...

热门文章

  1. Phoenix报错(5) org.apache.hadoop.hive.ql.metadata.HiveException
  2. 【279天】每日项目总结系列017(2017.11.11)
  3. char* 和char[]的差别
  4. EditPlus+NAnt构建轻巧的.NET开发环境
  5. 盗梦空间http://acm.nyist.net/JudgeOnline/problem.php?pid=125
  6. Java中字符(串)和数值类型的转换
  7. Flutter的Chip标签组件
  8. Flutter AppBar控件
  9. android 懒加载用法,Android ViewPager Fragment使用懒加载提升性能详解
  10. HTML和CSS面试题第35题