登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

她三哥

Tsange

 
 
 

日志

 
 

线程安全  

2008-11-20 21:57:21|  分类: C/VC/C++ |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

    ACE中提供的安全保护原语,除了守卫、条件变量、消息队列之外,还有以下安全保护原语:
    ACE_Mutex:
    封装互斥机制的包装类,用于为共享资源的序列化访问提供简单、高效的保护机制.其功能与二元信号量类似.可用于线程和进程间的互斥;
    ACE_Thread_Mutex:
    可用于替换ACE_Mutex,专门用于线程之间的互斥;
    ACE_Recursive_Thread_Mutex:
    这种互斥体是递归互斥体,也就是说,可以由同一个线程多次获取.注意:为了使其能够正常工作,你释放它的次数必须要和获取它的次数一样多;
    ACE_RW_Mutex:
    这个类是封装readers/write锁的类.要进行读和写,要以不同的方式获取这种锁,在没有写入者时可以有多个读者对其进行读取;这种锁是非递归的;
    ACE_RW_Thread_Mutex:
    可用于替换ACE_RW_Mutex,专门用于线程之间的同步;
    ACE_Token:
    令牌是ACE提供的最丰富、最重要的加锁原语.这种锁是递归的,允许你进行读加锁和写加锁.此外,它还会保证严格的FIFO获取顺序;所有调用acquire()方法的线程都会进入一个FIFO队列,按顺序(FIFO的顺序)获取锁;
    ACE_Atomic_Op:
    模板包装,允许你在指定的类型上进行安全的算术运算;
    例如:
    typedef ACE_Atomic_Op<ACE_Thread_Mutex, unsigned int> SafeUINT;
    typedef ACE_Atomic_Op<ACE_Thread_Mutex, int> SafeINT;
    ACE_Guard<T>:
    基于模板的守卫类,其模板参数是锁的类型;
    ACE_Read_Guard<T>:
    守卫类,会在构造过程中调用一个读/写守卫的acquire_read()操作;
    ACE_Write_Guard<T>:
    守卫类,会在构造过程中调用一个读/写守卫的acquire_write()操作;
    递归互斥体:
    可以由同一个线程多次获取,但为了能够正常工作,释放的次数必须与获取的次数相同;ACE以ACE_Recursive_Thread_Mutex类和ACE_Token类的形式来提供递归互斥体的功能;
    Readers/Writer锁:
    这个锁就是多读者/单写者锁,它允许多个线程同时持有一个锁进行读取,但是只有一个线程持有这个锁进行写入;这样的锁常用于这样的场合:受到保护的数据经常频繁地被多个线程读取,但是不常被写入,或者是只被很少几个线程写入;因此,也只有在读取竞争大大超过写入竞争的时候,这样的锁的效率就比较高了;
    ACE以ACE_RW_Mutex类和ACE_RW_Thread_Mutex类的形式来提供Readers/Writer锁;调用者可以通过调用acquire_read()方法来获取这些互斥体以进行读取,通过调用acquire_write()方法来获取这些互斥体以进行写入;

  评论这张
 
阅读(1540)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018