Windows多线程总结(3)-- 线程同步(使用互斥对象实现线程同步)

         上一篇说明了多线程是存在着问题的,起始就是多线程操作同一数据而不同步的问题。那么如果实现线程的同步呢?

         线程的同步有多种实现方式:

        互斥内核对象、事件内核对象、可等待的计数器内核对象、信号量内核对象和等待函数等等来实现线程的同步。

        我们先用互斥内核对象实现线程同步。

      

         互斥内核对象,能够确保线程拥有对单个资源的互斥访问权,互斥对象包含一个使用数量,一个线程ID和一个计数器。其中ID用于标识系统中的哪个线程当前拥有互斥对象,计数器用于指明该线程拥有互斥对象的次数。

使用CreateMutext函数,创建或打开一个互斥对象,然后利用互斥对象完成线程间的同步。

HANDLE CreateMutex(
     LPSECURITY_ATTRIBUTESl  pMutexAttributes, // 指向安全属性的指针
     BOOL  bInitialOwner, // 初始化互斥对象的所有者
     LPCTSTR  lpName // 指向互斥对象名的指针
);
参数 类型及说明
lpMutexAttributes :

         可以使用NULL,表示使用默认的安全性。
bInitialOwner
:

          表示互斥对象的初始拥有者。如果为真,创建这个互斥对象的线程获得该对象的所有权,否则,该线程不获得该互斥对象的所有权。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值