windows 互斥量内核对象 Mutex
互斥量内核对象 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相关推荐
- windows笔记-【内核对象线程同步】等待函数
等待函数可使线程自愿进入等待状态,直到一个特定的内核对象变为已通知状态为止. WaitForSingleObject 函数 DWORD WaitForSingleObject( HANDLE hO ...
- windows笔记-【内核对象线程同步】概述
用户方式同步的优点是它的同步速度非常快.但它也有其局限性. 例如,互锁函数家族只能在单值上运行,根本无法使线程进入等待状态.可以使用关键代码段使线程进入等待状态,但是只能用这些代码段对单个进程中的线程 ...
- windows C/C++ 内核对象、事件对象、信号量
承接上一篇:https://blog.csdn.net/uVarAndMethod/article/details/90360838 1.内核对象: 进程.线程.文件.文件映射.事件.互斥体等等 2. ...
- 【Windows】线程漫谈——线程同步之信号量和互斥量
本系列意在记录Windwos线程的相关知识点,包括线程基础.线程调度.线程同步.TLS.线程池等 信号量内核对象 信号量内核对象用来进行资源计数,它包含一个使用计数.最大资源数.当前资源计数.最大资源 ...
- 经典线程同步 互斥量Mutex的使用分析
互斥量(mutex)内核对象用来确保一个线程独占对一个资源的访问. 互斥量对象包含一个使用计数.线程ID以及一个递归计数. 互斥量与关键段的行为完全相同.但是,互斥量是内核对象,而关键段是用户模式下的 ...
- windows内核对象
内核对象只是操作系统内核分配的一个内存块,并且只能由操作系统内核访问.该内存块是一种数据结构,它的成员负责维护该对象的各种信息.Windows提供一组函数创建和操作内核对象.调用一个创建内核对象的函数 ...
- Windows核心编程学习九:利用内核对象进行线程同步
注:源码为学习<Windows核心编程>的一些尝试,非原创.若能有助于一二访客,幸甚. 1.程序框架 #include "Queue.h" #include <t ...
- 用内核对象进行线程同步
本章讨论的是如何使用内核对象来对线程进行同步,与用户模式下的同步机制相比,内核对象的用途要广泛的多.实际上,内核对象唯一的缺点就是他们的性能.当我们调用本章任何一个新函数时,调用线程必须从用户模式切换 ...
- CreateMutex创建互斥内核对象
http://blog.sina.com.cn/s/blog_149e9d2ec0102wyr0.html 在编程中我们常使用程序创建一个互斥的内核对象,目的就是为了让这个程序只能运行一次.我们都会有 ...
- RT-Thread学习笔记——互斥量
前言 前面学习了RT-Thread的信号量,但信号量在一些场合使用会存在优先级翻转问题,接下来我们学习互斥量,在 RT-Thread 操作系统中,互斥量可以解决优先级翻转问题,实现的是优先级继承算法. ...
最新文章
- 那些年值得铭记的时刻
- UITableView 局部刷新
- Java断言(assert)
- 学Java好不好 要避开哪些雷区
- MapReduce案例-wordcount-准备工作
- 用css3制作旋转加载动画的几种方法
- LVS负载均衡群集(LVS-NAT搭建)
- hdu 确定比赛名次
- MySQL修改表名示例
- PowerDesigner表结构和字段大小写转换
- [python]---从java到python(03)---爬虫
- php生成不重复时间戳,PHP获取时间戳和微秒数以及生成唯一ID
- (oracle)八、表
- 51 nod 1521 一维战舰 时间复杂度O(n),同 Codeforces 567D. One-Dimensional Battle Ships 有详细注释...
- 日常邮件用语(一)网摘学习
- 微信小游戏排行榜设计技术梳理
- 免校准的电量计量芯片_电能计量芯片应用心得之选型篇
- Team Queue
- c#实现 正弦sin、反正弦arcsin,正切tan、反正切arctan:求角度值
- 如何使用计算机处理文件夹,电脑打开某些文件夹提示引用了不可用位置怎么解决[多图]...
热门文章
- Phoenix报错(5) org.apache.hadoop.hive.ql.metadata.HiveException
- 【279天】每日项目总结系列017(2017.11.11)
- char* 和char[]的差别
- EditPlus+NAnt构建轻巧的.NET开发环境
- 盗梦空间http://acm.nyist.net/JudgeOnline/problem.php?pid=125
- Java中字符(串)和数值类型的转换
- Flutter的Chip标签组件
- Flutter AppBar控件
- android 懒加载用法,Android ViewPager Fragment使用懒加载提升性能详解
- HTML和CSS面试题第35题