avatar
C++ Singleton的实现# JobHunting - 待字闺中
b*e
1
那位大牛能给个C++ Singleton的实现? 我自己写了一个不知道正确与否, 如果希望做到
thread-safe, 应该在什么地方加入mutex和condition variable
class Singleton{
Singleton();
~Singleton();
Singleton(const Singleton &);
Singleton & operator=(const Singleton &);
static Singleton * myinstance;
public:
static Singleton & CreateInstance();
static void Destory();
};
Singleton::Singleton(){
}
Singleton::~Singleton(){
}
Singleton & Singleton::CreateInstance(){
if(!myinstance){
avatar
S*n
2
大致写了个思路如下。不想写实现。这里写code太不好看了。
class Singleton
{
public:
static Singleton* getSingleton();
private:
Singleton();
static Singleton* ptr;
};
avatar
f*5
3
static Singleton & CreateInstance();
==>
static Singleton * CreateInstance();

做到

【在 b********e 的大作中提到】
: 那位大牛能给个C++ Singleton的实现? 我自己写了一个不知道正确与否, 如果希望做到
: thread-safe, 应该在什么地方加入mutex和condition variable
: class Singleton{
: Singleton();
: ~Singleton();
: Singleton(const Singleton &);
: Singleton & operator=(const Singleton &);
: static Singleton * myinstance;
: public:
: static Singleton & CreateInstance();

avatar
l*n
4
class Singleton
{
private:
static Singleton* _instance;
Singleton() {}
~Singleton() {}
Singleton(const Singleton &);
Singleton& operator=(const Singleton&);
public:
static Singleton &getInstance();
static void clearInstance();
};
Singleton& Singleton::getInstance()
{
pthread_mutex_lock(&mutex);
if (!Singleton::_instance)
{
Singleton::_instance = new Singleton();
}
pthread_mutex_unlock
avatar
p*s
5
wiki上有正解
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。