互斥量,临界区,事件,信号量

互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。
同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源。


互斥量的WaitForSingleObject-->ReleaseMute,临界区的EnterCriticalSection-->LeaveCriticalSection,都是必须在同一个线程内执行;
例如:主线程WaitForSingleObjcet或EnterCriticalSection,而在线程函数中ReleaseMutex或 LeaveCriticalSection会执行失败,互斥量和临界区都有线程所有权的概念,互斥量和临界区都是绑定到执行线程;


互斥量,事件,信号量都可以跨进程使用,具体的对象可以通过名字来访问;
举例:跨进程的事件通知:
进程A: HANDLE hEvent = CreateEvent(NULL,  FALSE,  FALSE, _T("Global\\ATestEvent"));  // 自动,初始为无信号
Global\\**** 可以保证:在创建命名时间对象时指定名字是全局的。
这样做的好处如下:
这样创建的内核对象无论出于服务,还是内核中,应用层都可以打开并使用这个内核对象。
进程B: HANDLE hEvent = ::OpenEvent(EVENT_ALL_ACCESS, FALSE,_T("Global\\ATestEvent"));
//EVENT_ALL_ACCESS 指定事件对象所有可能的权限
SetEvent(hEvent);//进程A收到相关消息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值