互斥量 Mutex

头文件

<Windows.h>
<process.h>

应用

HANDLE hMutex;

hMutex = CreateMutexA(NULL,//安全属性
    FALSE,    //互斥量的初始状态
    NULL);   //命名

WaitForSingleObject(hMutex);

ReleaseMutex(hMutex);    //释放互斥量

函数原型

HANDLE CreateMutexA(
    PSECURITY_ATTRIBUTES psa,
    BOOL bInitialOwner,
    PCTSTR pszName);
HANDLE CreateMutexEx(
    PSECURITY_ATTRIBUTES psa,
    PCTSTR pszName,
    DWORD dwFlags,   //系统保留,传0
    DWORD dwDesiredAccess);
BOOL ReleaseMutex(HANDLE hMutex);

-其中,bInitialOwner用于控制互斥量的初始状态。
-bInitialOwner是TRUE,那么对象的线程ID将被设为调用线程的ID,递归计数将被设为1。此刻处于未触发状态。
-bInitialOwner是FALSE,对象的线程ID和递归计数都为0,处于触发状态。

成功等待了几次,Release也要调用相应的次数(使对象的递归计数变为0)才能触发对象。

-Release的调用次数如果有错误,在编译链接中不会有错误,只是对结果产生影响。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,923评论 18 139
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,366评论 11 349
  • Java8张图 11、字符串不变性 12、equals()方法、hashCode()方法的区别 13、...
    Miley_MOJIE阅读 3,731评论 0 11
  • Java SE 基础: 封装、继承、多态 封装: 概念:就是把对象的属性和操作(或服务)结合为一个独立的整体,并尽...
    Jayden_Cao阅读 2,140评论 0 8
  • 前些日子重读《史记》,读过《五帝本纪》,发现果然没有人能无私到把权利交给和自己没有血缘关系的外人,我忽然觉得从小学...
    燕国术士阅读 829评论 0 0