我在多线程环境中做了很少的工作。所以,我需要知道下面的类的getInstance函数是否是线程安全的。这里是单例类:单线程线程安全级别
//Singleton class
class S {
// intentionally avoided pointer
static S singleObject;
// Private constructor
s();
s (S &);
s& operator= (const s&);
public:
// return reference of static object
s& getInstance()
{
return singleObject;
}
/* Normally with static pointer instance, getInstnace look like as
s& getInstace()
{
// trying to avoid multiple copies of singleObject
lock_mutex()
if (singleObject == null)
singleObjecct = new S();
unlock_mutex();
return *singleObject;
}
*/
};
S S::singleObject;
在getInstance函数(未注释)中,返回静态对象的引用。它是否需要线程安全机制?
在第二个getInstance(注释)中,如果singleObject为null,我们创建该对象。所以,它需要一个锁定机制,需要同步,对吗?
看看http://codereview.stackexchange.com/。 – 2012-07-26 10:00:54