C++?ж??????Singleton????Щ???
???????????? ???????[ 2015/3/11 15:34:30 ] ????????C++ ??? ???????
???????
???????????????????????????????????????????????????C++11??????£???C++???????????Singleton??
???????????????????????????Scott Meyer???Effective C++???????????static????????й???local static???????????????????????????????????????????????????Щ????????????????????????????????????е?Singleton????????????????????Singleton????Щ???
?????????
???????????£???????????????д????
template<typename T>
class Singleton
{
public:
static T& getInstance()
{
if (!value_)
{
value_ = new T();
}
return *value_;
}
private:
Singleton();
~Singleton();
static T* value_;
};
template<typename T>
T* Singleton<T>::value_ = NULL;
???????????У???????д??????????????????????????в??????
????????????
???????????????У????浥????д???????race condition?????????γ?????????????????????1?????????????????????????shared variable?????????α????
template<typename T>
class Singleton
{
public:
static T& getInstance()
{
{
MutexGuard guard(mutex_) // RAII
if (!value_)
{
value_ = new T();
}
}
return *value_;
}
private:
Singleton();
~Singleton();
static T* value_;
static Mutex mutex_;
};
template<typename T>
T* Singleton<T>::value_ = NULL;
template<typename T>
Mutex Singleton<T>::mutex_;
???????????????????????????????????????????????????????????ε???getInstance??????????????????????????getInstance??????????????????????????????????DCLд??????????????????????
??????
???·???
??????????????????
2023/3/23 14:23:39???д?ò??????????
2023/3/22 16:17:39????????????????????Щ??
2022/6/14 16:14:27??????????????????????????
2021/10/18 15:37:44???????????????
2021/9/17 15:19:29???·???????·
2021/9/14 15:42:25?????????????
2021/5/28 17:25:47??????APP??????????
2021/5/8 17:01:11