当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:55:00  来源:本站整理

Win32下两种用于C++的线程同步类(下)[VC/C++编程]

赞助商链接



  本文“Win32下两种用于C++的线程同步类(下)[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

上一篇中我介绍了一种通过封闭Critical Section对象而便利的利用互斥锁的方法,文中全部的例子是两个线程对同一数据一读一写,因此需求让它们在这里互斥,不能同时拜候.而在实际情形中大概会有更复杂的情形呈现,就是多个线程拜候同一数据,一部份是读,一部份是写.我们知道只有读-写或写-写同时举行时大概会呈现问题,而读-读则可以同时举行,因为它们不会对数据举行改正,所以也有必要在C++中封装一种便利的答应读-读并发、读-写与写-写互斥的锁.要实现这种锁,利用临界区就很艰难了,不如改用内查对象,这里我利用的是互斥量(Mutex).

总体的构造与上一篇中的近似,都是写出一个对锁举行封装的基类,再写一个用于调用加、解锁函数的类,通过对第二个类的生命周期的管理实现加锁和解锁.这里触及到两个新问题,一是加锁、解锁行动都有两种,一种是加/解读锁,一种是加/解写锁;二是为了答应读-读并发,这里只声明一个Mutex是不够的,必必要声明多个Mutex,并且有多少个Mutex就同时允很多少个读线程并发,之所以这么说,是因为我们要利用的API函数是WaitForMultipleObjects.

WaitForMultipleObjects函数的功效就是等候对象状况被设置,MSDN中对它的阐明为:

Waits until one or all of the specified objects are in the signaled state or the time-out interval elapses.

这是个很好用的函数,我们可以用它来等候某个或某几个对象,并且答应设置超不时间,等候成功时与超不时返回的值是差别的.假如返回的值比WAIT_ABANDONED小则表示等候成功.“等候成功”关于差别范例的内查对象有差别的意义,比方关于进程或线程对象,等候成功就表示进程或线程履行完毕了;关于互斥量对象,则表示此对象目前不被任何其他线程拥有,并且一旦等候成功,当前线程即拥有了此互斥量,其他线程则不能同时拥有,直接调用ReleaseMutex函数主动释放互斥量.


  以上是“Win32下两种用于C++的线程同步类(下)[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • IIS配置PHP呈现1%不是有效WIN32利用程序
  • <b>nginx win32 版本静态文件测试 (Windows环境)</b>
  • Win32版与Unix版MySQL对比
  • Win32平台下运行的Mysql的一些特点
  • com.ms.win32包
  • JDK1.4下实现访谒WIN32注册表
  • 令Win32利用程序跳入系统零层
  • Win32Asm教程
  • Win32下两种用于C++的线程同步类(下)
  • <b>Win32下两种用于C++的线程同步类(上)</b>
  • 深化浅出Win32多线程程序计划综合实例
  • Win32调试接口计划与实现浅析
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .