c++ 单例非线程安全
Single* Single::Instance()
{
if (!m_instance)
{
m_instance = new Single();
}
return m_instance;
}
c++单例的线程安全
Single* Single::Instance()
{
Lock();
if (!m_instance)
{
m_instance = new Single();
}
UnLock();
return m_instance;
}
更有效率的c++单例线程安全
Single* Single::Instance()
{
if (!m_instance)
{
Lock();
if (!m_instance)
{
m_instance = new Single();
}
UnLock();
}
return m_instance;
}
c++0x以后,static变量初始化就是线程安全的了,所以我们可以这样写
Single& Single::Instance()
{
static Single instance;
return instance;
}