halleyzhang 发表于 2010-3-18 18:13:45

新人来,第二个帖子

因为接手的代码是用ace 写的,不得已去了解ace ,岂料查找文档和看代码都弄得我头昏眼花,来论坛散散心吧。
最先映入眼帘的是一个ACE_Singleton对象,这个很好理解。比通常的模式多了个ACE_LOCK,据说是为了线程安全,也很好理解。不过我不明白放在这里能起什么作用。我阅读代码的能力不强,代码里面宏定义太多转来转去看得眼晕,所以就自己猜测了一下,然后冒昧地到这里来求得验证了:这里这个ACE_LOCK类型,是不是不会自动起什么作用,只是在子类实现的时候,可以通过ACE_Object_Manager::get_singleton_lock把相应的对象取出来呀?如果说有别的用处,是不是仅仅防止两个线程同时创建singleton对象而失去singleton的本意呢?期待老手解答,谢谢。

freeeyes 发表于 2010-3-18 18:48:40

singleton的锁是为了防止竞争。在同一时刻下两个线程对单件的调用。锁分为好几种。
具体参阅http://blog.csdn.net/appstudy/archive/2009/06/12/4264383.aspx

sevencat 发表于 2010-3-18 23:36:02

这是一个经典的double lock的单体。

halleyzhang 发表于 2010-3-19 14:12:16

明白了,谢谢解答。
页: [1]
查看完整版本: 新人来,第二个帖子