asp.net 中 c++单例实现问题分析_
方案一
代码如下:
class qmmanager
{
public:
static qmmanager instance()
{
static qmmanager
instance_; return
instance_;
}
}
这是最简洁的版本,在单线程下( 或者是 c++0x 下)是没
任 何 问 题 的 , 但 在 多 线 程 下 就 不 行 了 , 由 于 static
qmmanager
instance_;这句话不是线程平安的。
在局部作用域下的静态变量在编译时,编译器会创建一个
附加变量标识静态变量是否被初始化,会被编译器变成像下
面这样(伪代码):
代码如下:
static qmmanager instance()
{
static bool constructed = false;