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

想开个网站不知怎样做南京有名的网站建设公司

想开个网站不知怎样做,南京有名的网站建设公司,seo技术中心,网站开发软件怎么做提示#xff1a;文章写完后#xff0c;目录可以自动生成#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、单例是什么#xff1f;二、解读1.懒汉式2.饿汉式3.static变量特性4.call_once特性 总结 前言 单例模式几乎是每种语言都不可少的一种设计模式#xff0c… 提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档 文章目录 前言一、单例是什么二、解读1.懒汉式2.饿汉式3.static变量特性4.call_once特性 总结 前言 单例模式几乎是每种语言都不可少的一种设计模式今天就针对C语言来解读下集中单例模式并给出代码说明。 一、单例是什么 单例就是单实例简而言之内存中只存在这一个实例在很多场景下很有用比如线程池、内存池等等。 二、解读 按照创建时机可以分为饿汉式和懒汉式。所谓饿汉式就是程序启动的时候立即创建饿汉式就是需要的时候创建。 1.懒汉式 懒汉式顾名思义不会主动创建直到主动获取才创建。懒汉式又主要分为两种线程安全和线程不安全。接下来分别介绍这几种和提供源代码示例。 简单模式: class Singleton {static Singleton *getInstance() {if (instance nullptr) {instance new Singleton();}return instance;}private:static Singleton *instance;};Singleton *Singleton::instance nullptr;优点性能和饿汉式差不多没有锁性能不会损失 缺点线程不安全 总结需要自己确保线程安全比如启动线程前就要创建好避免竞争条件产生 线程安全 #include mutex class Singleton {public:static Singleton *getInstance() {std::lock_guardstd::mutex lock(mtx);if (instance nullptr) {instance new Singleton();}return instance;}private:static Singleton *instance;static std::mutex mtx;};Singleton *Singleton::instance nullptr;std::mutex Singleton::mtx;优点线程安全随时随地都是安全的 缺点性能差每次获取实例都要上锁 总结不建议使用 双重检查锁 #include mutex class Singleton {public:static Singleton *getInstance() {if (instance nullptr) {std::lock_guardstd::mutex lock(mtx);if (instance nullptr) {instance new Singleton();}}return instance;}private:static Singleton *instance;static std::mutex mtx;};Singleton *Singleton::instance nullptr;std::mutex Singleton::mtx;优点线程安全性能比上面的强 缺点性能有轻微损耗只有第一次创建才需要上锁后面访问不需要上锁 总结强烈推荐既解决了线程安全问题又解决了性能问题 2.饿汉式 不会产生数据竞争程序启动时就创建和在竞争条件出现之前创建完成所以先天是线程安全的。 class Singleton {public:static Singleton getInstance() {return instance;}private:static Singleton instance;};Singleton Singleton::instance;优点线程安全性能最好 缺点无论需不需要都会创建会浪费资源 总结可用但不太推荐 3.static变量特性 C11之后static修饰的局部变量有一个很重要的特性初始化的时候会自动加锁这个特性是编译器负责维护的。所以可以借用这个特性开发一个单例模式一定是线程安全的而且提供不俗的性能。 注这个单例又叫米尔斯单例(Meyers Singleton) class Singleton {public:static Singleton getInstance() {static Singleton instance;return instance;}private:Singleton() {}public:Singleton(const Singleton ) delete;Singleton operator(const Singleton ) delete;};优点线程安全性能不俗 缺点初始化上锁略微拖慢性能后面正常获取C11以后版本才行 总结极其推荐 4.call_once特性 除了米尔斯单例还有一个C11的新特性可以设计单例这个特性我们平常容易忽视那就是call_once。它也是一种线程同步机制C保证call_once保护的方法只被调用一次。 #include atomic class Singleton {public:static Singleton getInstance(){std::call_once(flag,[]{instance new Singleton();});return *instance;}private:static Singleton* instance;static std::once_flag flag;};Singleton* Singleton::instance nullptr;std::once_flag Singleton::flag;优点线程安全性能不俗针对方法可以同时初始化多个资源 缺点第一次调用拖慢性能后面就不会了C11以后版本才行 总结和米尔斯很像但是实现比米尔斯复杂推荐指数放在米尔斯单例之后 总结 1、C11以上版本优先使用米尔斯单例比双重检查锁性能强 2、其他场景建议双重检查锁call_once酌情使用
http://www.w-s-a.com/news/244800/

相关文章:

  • 大家称赞的网站建设常德小学报名网站
  • 做网站怎么建文件夹百度网盘搜索神器
  • 企业有域名怎么做网站淘宝推广平台
  • 学网站开发去哪学药品销售推广方案
  • 哔哩哔哩h5播放器深圳网站seo外包公司哪家好
  • asp做的手机网站wordpress 文章title
  • 网站验证码目录wordpress内嵌播放器
  • 文明网网站建设南昌市建设规费标准网站
  • 安康有建网站的公司吗做网站用什么网名好
  • 济南网站制作哪家专业西安市城乡建设网官方网站
  • 网站建设有趣小游戏怎样让网站优化的方式
  • 昭通做网站儿童编程教学入门教程
  • eclipse静态网站开发软文广告投放平台
  • 网站建设教学视频济南做网站需要多少钱
  • 网站免费做软件市工商联官方网站建设方案
  • 网站建设大体包含英铭长沙网站建设
  • 网站建设培训学校北京如何搜索网站
  • discuz论坛模板哪些网站容易做seo优化
  • 渭南公司做网站网站建设互联网推广
  • 公司网站app怎么做杭州建设局网站
  • 网站开发需要自己写代码吗12306网站多少钱做的
  • 策勒网站建设四川建设网有限责任公司招聘
  • 网站建设哪里有学网页界面设计论文
  • 怎么做外贸网站推广劳务公司网站怎么做
  • 滴答手表网站中铁建设集团有限公司招聘信息2021
  • 重庆富通科技有限公司网站新闻头条最新消息国家大事
  • 四字母net做网站怎么样企业代运营公司
  • 纪检网站建设方案wordpress首页静态页面
  • 网站右下角浮动效果如何做网站logo设计在线生成
  • 西宁哪里做网站婚纱摄影网站设计思路