由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 请问关于c++实现singleton的问题?
相关主题
c++ singleton questions请教一个c++ throw exception 问题
求教:c++中如何从raw data中创建对象?我这个C++程序有没有什么问题啊?请指点。。。谢谢。。。
one question about operator deleteC++的一个小疑问,求解惑
一道c++的考古题一个C++面试题分析
C++ 书推荐C++设计疑问
急问:compile and build dependency几个C++书写风格疑问
find bugs of c++ codesC++问题几个
没有经过构造函数???a c++ question
相关话题的讨论汇总
话题: singleton话题: copy话题: ctor话题: static
进入Programming版参与讨论
1 (共1页)
w*******e
发帖数: 285
1
【 以下文字转载自 JobHunting 讨论区 】
发信人: windforce (大怪兽), 信区: JobHunting
标 题: 请问关于c++实现singleton的问题?
发信站: BBS 未名空间站 (Sun Nov 16 06:56:48 2008), 转信
我觉得目标和方法是不是差不多这样?
public static的getinstance function返回唯一的instance。
declare private的ctor,copy ctor和copy assignment防止私自创建和copy。
只在第一次调用getinstance的时候才创建对象,所谓的laziness。
在创建instance的时候用mutex同步,但是以后就不用同步提高效率。
我写了一个如下,我觉得运行起来还可以,大家看看有什么问题吗?
class Singleton
{ public:
static Singleton* GetInstance();
~Singleton() {cout << "Dtor"<< endl;};
vo
E*****7
发帖数: 128
Q**g
发帖数: 183
3
Actually, neither implementation is thread-safe
http://www.aristeia.com/Papers/DDJ_Jul_Aug_2004_revised.pdf
http://blogs.msdn.com/oldnewthing/archive/2004/03/08/85901.aspx

【在 w*******e 的大作中提到】
: 【 以下文字转载自 JobHunting 讨论区 】
: 发信人: windforce (大怪兽), 信区: JobHunting
: 标 题: 请问关于c++实现singleton的问题?
: 发信站: BBS 未名空间站 (Sun Nov 16 06:56:48 2008), 转信
: 我觉得目标和方法是不是差不多这样?
: public static的getinstance function返回唯一的instance。
: declare private的ctor,copy ctor和copy assignment防止私自创建和copy。
: 只在第一次调用getinstance的时候才创建对象,所谓的laziness。
: 在创建instance的时候用mutex同步,但是以后就不用同步提高效率。
: 我写了一个如下,我觉得运行起来还可以,大家看看有什么问题吗?

E*****7
发帖数: 128
4
Good doc to read. Thank Qing for sharing them with us.

【在 Q**g 的大作中提到】
: Actually, neither implementation is thread-safe
: http://www.aristeia.com/Papers/DDJ_Jul_Aug_2004_revised.pdf
: http://blogs.msdn.com/oldnewthing/archive/2004/03/08/85901.aspx

w*******e
发帖数: 285
5

谢谢指导,看完这两篇文章清楚多了,尤其是第一个pdf文件。
不过普通的VC和GCC的编译器会是怎么样的呢?是像文章里说的那样吗?
还有第二个link里面说到的scoped static init不safe,但是我发现在vc和gcc下面,
如果
某个初始化函数像那个ComputeSomethingSlowly()一样非常慢。那么其他的thread都会
在不进入这个函数的同时被lock住,然后等第一个thread执行完
ComputeSomethingSlowly()再进一步。这个是不是并不是标准C++保证的,但是每个编
译器基本上都这么做?

【在 Q**g 的大作中提到】
: Actually, neither implementation is thread-safe
: http://www.aristeia.com/Papers/DDJ_Jul_Aug_2004_revised.pdf
: http://blogs.msdn.com/oldnewthing/archive/2004/03/08/85901.aspx

h*********y
发帖数: 1080
6
1 (共1页)
进入Programming版参与讨论
相关主题
a c++ questionC++ 书推荐
问一个empty class的size的问题急问:compile and build dependency
问个 ctor/copy ctor的问题find bugs of c++ codes
pointer to base class = new derived, what will happend??没有经过构造函数???
c++ singleton questions请教一个c++ throw exception 问题
求教:c++中如何从raw data中创建对象?我这个C++程序有没有什么问题啊?请指点。。。谢谢。。。
one question about operator deleteC++的一个小疑问,求解惑
一道c++的考古题一个C++面试题分析
相关话题的讨论汇总
话题: singleton话题: copy话题: ctor话题: static