找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 3929|回复: 2

ACE的guard和 WINDOWS的关键代码段 效率一样吗

[复制链接]
发表于 2011-2-23 16:22:47 | 显示全部楼层 |阅读模式
ACE的guard和 WINDOWS的关键代码段 效率一样吗?  WINDOWS的关键代码段 对应 ACE的guard 还是别的呢?
发表于 2011-2-24 20:06:26 | 显示全部楼层
效率上应该没什么问题,毕竟都inline了,但是你说的对应win的CS应该对应到ACE的Mutex,而不是Guard,我个人认为
发表于 2011-2-25 10:45:45 | 显示全部楼层
楼上说的有道理。

ACE中有ACE_Mutex,ACE_Null_Mutex,ACE_Thread_Mutex,ACE_Process_Mutex,其中,ACE_Null_Mutex并不是用来进行线程同步的,是作为单线程应用而提供的(可以容易的通过一点修改实现多线程同步,即改为其他的Mutex类),ACE_Thread_Mutex使用的就是CS,只能用于进程内的线程间同步,ACE_Process_Mutex使用的是MUTEX,用于进程内或者进程间的线程同步,ACE_Mutex并不常用,通常推荐使用其他的Mutex类。

而GUARD并不是同步类,只是用于锁的自动获取和释放,采用的是RAII方式,由于C++支持异常,当我们获取到锁的时候,一旦发生异常退出,有可能锁未释放,就会导致死锁,GUARD的作用就是防止异常发生时有可能导致的死锁,C++标准中指定,无论异常与否,都会保证stack变量的析构被调用,因此,就保证了锁能够在任何情况下都被释放,也就不存在死锁的情况了,GUARD的作用正是如此。
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-5-16 08:44 , Processed in 0.010036 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表