首页 > 其他 > 详细

互斥量Mutex

时间:2020-04-18 17:01:52      阅读:67      评论:0      收藏:0      [点我收藏+]

C++使用内核对象Mutex来实现线程同步锁。当两个或者更多线程需要同时访问一个共享资源时,Mutex可以只向一个线程授予对共享资源的独占访问权,如果第一个线程获取了互斥体,则要获取该互斥体的第二个线程将被挂起,知道第一个线程释放该互斥体

 

相关API函数:

 

创建互斥量

CreateMutex();

HANDLE CreateMutex(
LPSECURITY_ATTRIBUTESlpMutexAttributes, // 指向安全属性的指针,一般为NULL
BOOLbInitialOwner, // 初始化互斥对象的所有者,TRUE表示调用互斥对象的线程获得互斥对象的所有权,为FALSE表示不拥有
LPCTSTRlpName // 指向互斥对象名的指针,传NULL表示匿名互斥量
);

函数成功返回句柄,如果创建已有互斥量,那么返回已经存在的信号量句柄,GetLastError也会设置为ERROR_ALREADY_EXISTS,失败返回NULL

 

ReleaseMutex()  释放线程拥有的互斥体的控制权。

BOOL WINAPI ReleaseMutex(
HANDLE hMutex   //互斥体句柄
);

 

利用mutex也可以实现进程只有一个实例

方法:

进程第一次启动时成功创建名为mutex实例成功,此后进程实例第二次创建时,GetLastError()会返回ERROR_ALREADY_EXISTS,从而保证进程在系统中只能存在一个实例。

互斥量Mutex

原文:https://www.cnblogs.com/liu6666/p/12726551.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!