当前位置: 首页 > news >正文

网站域名商代理商淘客网站做弹窗广告

网站域名商代理商,淘客网站做弹窗广告,企业网站建设方案教程,服装购物网站排名有些对象只需要有一个,比如线程池、缓存和注册表等。 对比全局变量,其需要在程序开始就创建好对象,如果这个对象比较耗资源,而在后面的执行过程中又一直没有用到,就造成了浪费。 class Singleton {private:static Si…

有些对象只需要有一个,比如线程池、缓存和注册表等。

对比全局变量,其需要在程序开始就创建好对象,如果这个对象比较耗资源,而在后面的执行过程中又一直没有用到,就造成了浪费。

class Singleton {private:static Singleton instance;Singleton(){}publicstatic Singleton getInstance() {// 多线程环境下,可能先后判断为trueif ( instance == null ) {instance = new Singleton();}return instance;}
}

双重检查锁

// 解决指针没有析构和多线程问题
class Singleton{private:static std::shared_ptr<Singleton > instance;static std::mutex m_mutex;Singleton(){}publicstatic Singleton getInstance() {// 多线程环境下,可能先后判断为trueif ( instance == null ) {std::lock_guard<std::mutex> lk(m_mutex);instance = std::shared_ptr<Singleton>(new             Singleton());}return instance;}
}

上述代码还存在问题是new Singleton()口语被抽象为下面的语句:

memory = allocate();    //1:分配对象的内存空间
instance = memory;      //3:设置instance指向刚分配的内存地址(此时对象还未初始化)
new(instance);          //2:初始化对象

那么另一线程在判断是否为null的时候可能得到一个为完全初始化的instance。

我们可以通过volatile对变量进行限制,防止指令重排
static std::shared_ptr<Singleton > volatile instance;

在Java中这样应该就可以了,c++好像还有点问题?具体的可以看下最后贴的参考文献。

最推荐的懒汉式单例模式(magic static)

// 解决指针没有析构和多线程问题
class Singleton{private:Singleton(){}publicstatic Singleton& getInstance() {static Singleton instrance;return instance;}
}

魔法静态变量是C++11的核心语言功能特性,提案:N2660 - Dynamic Initialization and Destruction with Concurrency, 最早在GCC2.3 / Clang2.9 / MSVC19.0等编译器得到支持。

这种方法又叫做 Meyers' SingletonMeyer's的单例, 是著名的写出《Effective C++》系列书籍的作者 Meyers 提出的。所用到的特性是在C++11标准中的Magic Static特性:

If control enters the declaration concurrently while the variable is being initialized, the concurrent execution shall wait for completion of the initialization.
如果当变量在初始化的时候,并发同时进入声明语句,并发线程将会阻塞等待初始化结束。

这样保证了并发线程在获取静态局部变量的时候一定是初始化过的,所以具有线程安全性。

单例模式volatile_单例模式 volatile_这瓜保熟么的博客-CSDN博客

C++ 单例模式_c++单例模式_WhiteTian的博客-CSDN博客

C++和双重检查锁定模式(DCLP)的风险_dclp认证_nodeathphoenix的博客-CSDN博客

http://www.yayakq.cn/news/658968/

相关文章:

  • 医院行业的网站是很难做吗中铁建设集团有限公司电话号码
  • H5平台网站建设河西网站建设开发
  • 免费主题网站wordpress文章同步微信公众号
  • 甘肃路桥建设集团网站做ppt哪个网站好
  • 建网站需要数据库吗云商城app下载
  • 广州建设工程安全质量监督网站食品包装设计论文
  • 做网站交接什么时需要交接网站建设哪家go
  • 杭州煜灿网络科技有限公司网站开发外贸实用工具
  • 汉服网站设计模板公众号修改wordpress
  • 软件开发包含网站开发吗企业为什么做网站系统
  • 山亭 网站建设医疗软件网站建设公司排名
  • 电子商务网站建设第二版论文免费发布便民信息平台
  • 网站几个模板最好个人网页设计首页
  • 怎样建立销售网站深圳建设交易主页
  • 网站空间ftp连接失败一台电脑赚钱的门路
  • 东营网站如何将网址做成链接
  • 网站右键屏蔽国土 住房与城乡建设部网站
  • 做网站比较便宜怎么快速推广网站
  • 电子商务网站推广方法和技巧网络营销外包项目
  • 请人做竞价网站的要求重点应用软件大全
  • 做直播网站一定要idc吗搜索引擎优化包括哪些
  • 做钓鱼网站太原网页设计培训学校
  • 网站建站 公司建设银行信用卡网站是哪个好
  • 淘宝网电脑版天津seo方案
  • wordpress仿站上传到西安网站建设-中国互联
  • 深圳制作网站哪家好济南网站推广徽hyhyk1
  • 广州网站设计公司排名重庆公司网站制作公司
  • 可以网站可以做免费的文案广告ASP.NET网站建设实战
  • php网站开发介绍黄骅市医院
  • 美发企业网站模板南宁建设网