企业网站制作简介百度seo查询系统
企业网站制作简介,百度seo查询系统,网站外链工具,网站开发专业简历转载#xff1a;https://www.cnblogs.com/ccdev/archive/2012/12/19/2825355.html 废话不多说#xff0c;常用的代码积淀下来。 一、懒汉模式#xff1a;即第一次调用该类实例的时候才产生一个新的该类实例#xff0c;并在以后仅返回此实例。 需要用锁#xff0c;来保证其…转载https://www.cnblogs.com/ccdev/archive/2012/12/19/2825355.html 废话不多说常用的代码积淀下来。 一、懒汉模式即第一次调用该类实例的时候才产生一个新的该类实例并在以后仅返回此实例。 需要用锁来保证其线程安全性原因多个线程可能进入判断是否已经存在实例的if语句从而non thread safety. 使用double-check来保证thread safety.但是如果处理大量数据时该锁才成为严重的性能瓶颈。 1、静态成员实例的懒汉模式 1 class Singleton2 {3 private:4 static Singleton* m_instance;5 Singleton(){}6 public:7 static Singleton* getInstance();8 };9
10 Singleton* Singleton::getInstance()
11 {
12 if(NULL m_instance)
13 {
14 Lock();//借用其它类来实现如boost
15 if(NULL m_instance)
16 {
17 m_instance new Singleton;
18 }
19 UnLock();
20 }
21 return m_instance;
22 } 2、内部静态实例的懒汉模式 这里需要注意的是C0X以后要求编译器保证内部静态变量的线程安全性可以不加锁。但C 0X以前仍需要加锁。 1 class SingletonInside2 {3 private:4 SingletonInside(){}5 public:6 static SingletonInside* getInstance()7 {8 Lock(); // not needed after C0x9 static SingletonInside instance;
10 UnLock(); // not needed after C0x
11 return instance;
12 }
13 }; 二、饿汉模式即无论是否调用该类的实例在程序开始时就会产生一个该类的实例并在以后仅返回此实例。 由静态初始化实例保证其线程安全性WHY因为静态实例初始化在程序开始时进入主函数之前就由主线程以单线程方式完成了初始化不必担心多线程问题。 故在性能需求较高时应使用这种模式避免频繁的锁争夺。 1 class SingletonStatic2 {3 private:4 static const SingletonStatic* m_instance;5 SingletonStatic(){}6 public:7 static const SingletonStatic* getInstance()8 {9 return m_instance;
10 }
11 };
12
13 //外部初始化 before invoke main
14 const SingletonStatic* SingletonStatic::m_instance new SingletonStatic;
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/89123.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!