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

网站开发的语言手机设计画图软件

网站开发的语言,手机设计画图软件,成都网站制作关键词推广排名,昌邑网站设计复习一下: 单例模式(Singleton Pattern) 原理: 单例模式确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。它通过将类的构造函数设为私有,防止外部代码直接实例化该类。同时,提供…

复习一下:

单例模式(Singleton Pattern)

原理:

单例模式确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。它通过将类的构造函数设为私有,防止外部代码直接实例化该类。同时,提供一个静态方法来获取唯一的实例。在首次调用获取实例的方法时,会创建这个实例,之后的调用都返回这个已创建的实例。

示例代码:
class Singleton {
private:static Singleton* instance;Singleton() {}
public:static Singleton* getInstance() {if (instance == nullptr) {instance = new Singleton;}return instance;}
};
Singleton* Singleton::instance = nullptr;
使用场景:

适用于资源共享的情况,如数据库连接池。因为只需要一个数据库连接池实例来管理连接,避免多次创建和销毁连接池带来的开销。还用于日志系统,全局只有一个日志对象记录各种日志信息,方便统一管理和配置。

优化

上面的代码虽然实现了单例模式,但存在线程安全问题。在多线程环境下,多个线程可能同时检查到 instance 为 nullptr,从而创建多个实例。可以使用双重检查锁定(Double-Checked Locking)或者静态局部变量的方式来优化。

  • 双重检查锁定

    双重检查锁定会在第一次检查 instance 是否为 nullptr 之后加锁,再次检查 instance 是否为 nullptr,以确保只有一个线程能创建实例。

    #include <mutex>class Singleton {
    private:static Singleton* instance;static std::mutex mutex_;Singleton() {}
    public:static Singleton* getInstance() {if (instance == nullptr) {std::lock_guard<std::mutex> lock(mutex_);if (instance == nullptr) {instance = new Singleton;}}return instance;}
    };
    Singleton* Singleton::instance = nullptr;
    std::mutex Singleton::mutex_;
    
  • 静态局部变量

    C++11 之后,静态局部变量的初始化是线程安全的,因此可以使用静态局部变量来实现单例模式。

    class Singleton {
    private:Singleton() {}
    public:static Singleton& getInstance() {static Singleton instance;return instance;}
    };
    

    这种方式更为简洁,并且自动处理了线程安全问题,也避免了手动管理内存。

    使用静态局部变量的方式来实现单例模式,其原理主要基于静态局部变量的两个关键特性:延迟初始化和线程安全初始化。

    延迟初始化

    静态局部变量是在程序第一次执行到其定义处时才进行初始化的。也就是说,只有当首次调用包含该静态局部变量的函数时,这个静态局部变量才会被创建并初始化。

    在单例模式的实现中,静态局部变量的这种特性能够确保单例实例是在真正需要使用它的时候才被创建,而非在程序启动阶段就创建,这样可以避免不必要的资源浪费。

    线程安全初始化

    C++11 标准规定,静态局部变量的初始化是线程安全的。这意味着在多线程环境下,即使多个线程同时调用包含静态局部变量的函数,也能保证该静态局部变量只会被初始化一次。

    当多个线程同时尝试访问并初始化这个静态局部变量时,标准要求编译器必须保证只有一个线程能够执行初始化操作,其他线程需要等待初始化完成后才能继续执行。这样一来,就确保了单例模式中实例的唯一性。


文章转载自:

http://38xpbNLK.zgdnz.cn
http://TWbYJGsa.zgdnz.cn
http://rh4x6S4H.zgdnz.cn
http://h5EFcl6w.zgdnz.cn
http://r8BUGlwB.zgdnz.cn
http://8zExhzpG.zgdnz.cn
http://wZGtoST6.zgdnz.cn
http://oJ0Hen22.zgdnz.cn
http://KEK3x9Qq.zgdnz.cn
http://nL6DOB3J.zgdnz.cn
http://PP7Fzlio.zgdnz.cn
http://7IV2QtJJ.zgdnz.cn
http://PrO6k2vC.zgdnz.cn
http://ipwa9Aqg.zgdnz.cn
http://CYGRJsKF.zgdnz.cn
http://0NA3urNP.zgdnz.cn
http://MyABa290.zgdnz.cn
http://EP8B8LlV.zgdnz.cn
http://glwuErO7.zgdnz.cn
http://uyrs8vpB.zgdnz.cn
http://jmJI5M6X.zgdnz.cn
http://W8qDqYbv.zgdnz.cn
http://MReBXWWh.zgdnz.cn
http://8LMm03bK.zgdnz.cn
http://oHlfBpRA.zgdnz.cn
http://f0bqctzS.zgdnz.cn
http://yUUzPtoT.zgdnz.cn
http://kGp0Fz34.zgdnz.cn
http://R0hXI8zw.zgdnz.cn
http://1IXDgBP9.zgdnz.cn
http://www.dtcms.com/wzjs/766783.html

相关文章:

  • 定制网站开发app费用建网站为什么要租空间
  • 建大型网站公司通辽公司做网站
  • 网站建设前期准备大前端wordpress
  • 辽宁城乡建设集团网站百度网站下载安装
  • 在线制作图网站近期时事新闻
  • 怎么自己制作属于自己的网站代做道具网站
  • 淄博 做网站汨罗做网站
  • 建小公司网站网站项目建设周期
  • 国家住房和城乡建设部网站官网网站设计费用
  • 常州网站建设技术托管做网站要空间还是服务器
  • 安庆市住房和城乡建设局网站wordpress用thinkphp
  • 中小企业网站制作是什么佛山专业网站建设哪家好
  • 网站seo平台温州seo服务
  • 广播电台网站建设板块自己的电脑做网站
  • 梧州网站设计推荐10条重大新闻
  • 艺术设计教学资源网站建设标准用html5做京东网站代码
  • 做一个网站网络公司网站案例
  • 网站建设贰金手指科捷6需要做网站的行业
  • 国内最大ae模板下载网站太原百度快速优化
  • 动态设计参考网站apache配置wordpress
  • 自己做网站需要哪些软件自己建设网站需要些什么
  • 苏州高端网站设计定制免费正能量不良网站推荐
  • 苏州怎么做网站四川网站建设报价
  • 建行手机网站wordpress安装出现乱码
  • wordpress 添加评论等级廊坊视频优化展现
  • 网站后台有哪些模块什么是网站空间
  • wordpress采集微信文章内容西安seo霸屏
  • 做网站到底怎么赚钱北京asp网站设计制作
  • 怎么选择扬中网站建设百度云分享tp响应式网站开发
  • 北京网站优化多少钱东莞营销型网站外包