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

石家庄自适应网站建设500强企业seo服务商

石家庄自适应网站建设,500强企业seo服务商,网站降权查询工具,哪个网站可以做行程攻略单例模式&#xff0c;用于确保一个类只有一个实例&#xff0c;并提供一个全局访问点以访问该实例。 饿汉式&#xff08;Eager Initialization&#xff09; 程序启动时就创建实例 #include <iostream> class SingletonEager { private:static SingletonEager* instanc…

单例模式,用于确保一个类只有一个实例,并提供一个全局访问点以访问该实例。

饿汉式(Eager Initialization)

程序启动时就创建实例

#include <iostream>
class SingletonEager 
{
private:static SingletonEager* instance;SingletonEager() {} // 私有构造函数public:static SingletonEager* getInstance() {return instance;}
};SingletonEager* SingletonEager::instance = new SingletonEager; // 在程序启动时即创建实例int main() 
{SingletonEager* instance1 = SingletonEager::getInstance();SingletonEager* instance2 = SingletonEager::getInstance();std::cout << (instance1 == instance2) << std::endl;  // 输出 1,两个指针变量的内容相同return 0;
}

懒汉式(Lazy Initialization)

延迟初始化,即在第一次访问时才创建实例。

缺点:不是线程安全的。因为它没有考虑多线程同时访问的情况。如果多个线程同时调用 getInstance() 方法,并且在 instance 还没有被初始化之前,它们可能会同时进入条件 if (!instance) 中,导致多次创建实例,这违反了单例模式的要求。

#include <iostream>class SingletonLazy 
{
private:static SingletonLazy* instance;SingletonLazy() {} // 私有构造函数public:static SingletonLazy* getInstance() {if (!instance) {instance = new SingletonLazy;}return instance;}
};SingletonLazy* SingletonLazy::instance = nullptr;int main() {SingletonLazy* instance1 = SingletonLazy::getInstance();SingletonLazy* instance2 = SingletonLazy::getInstance();std::cout << (instance1 == instance2) << std::endl; // 输出 1,两个指针变量的内容相同return 0;
}

想要解决线程安全问题,需要做互斥操作,使用作用域互斥锁即可

class SingletonLazyThreadSafe {
private:static SingletonLazyThreadSafe* instance;static std::mutex mutex;SingletonLazyThreadSafe() {} // 私有构造函数public:static SingletonLazyThreadSafe* getInstance() {std::lock_guard<std::mutex> lock(mutex);if (!instance) {instance = new SingletonLazyThreadSafe;}return instance;}
};

变体

这种方式非常简洁,并且是线程安全的

#include <iostream>class SingletonLazy 
{
private:SingletonLazy() {} // 私有构造函数public:static SingletonLazy* getInstance() {static SingletonLazy instance;return instance;}
};SingletonLazy* SingletonLazy::instance = nullptr;int main() 
{SingletonLazy* instance1 = SingletonLazy::getInstance();SingletonLazy* instance2 = SingletonLazy::getInstance();std::cout << (instance1 == instance2) << std::endl; // 输出 1,两个指针变量的内容相同return 0;
}
http://www.khdw.cn/news/34657.html

相关文章:

  • 手机销售网站怎么做seo站点是什么意思
  • 私服充值网站怎么做的优化网络软件
  • 188旅游网站管理系统源码推广服务公司
  • 网站开发下载那个百度指数分析
  • 建设网站网站名百度广告点击软件
  • 重庆招聘一般上什么网站推广公司
  • 网站中新颖的功能企业查询app
  • 做网站开发团队今日足球赛事推荐
  • 网站建设服务ysaigo云服务器
  • 网站换域名怎么做整站优化全网营销
  • 网站开发英文怎么说网站开发一般多少钱
  • 怎么添加网站权重上海关键词优化的技巧
  • 商业空间设计案例网站免费创建个人网站
  • 网站制作需要哪些保定关键词排名推广
  • 音乐网站怎么做外链抖音关键词排名查询
  • 做网站超链接软件发布网
  • 扁平风格网站 模板谷歌搜图
  • 自助式网站建设 济南临沂seo推广外包
  • wordpress 淘客网站semi认证
  • 深圳做网站公司排名百度seo优化推广公司
  • 手机网站代码抖音营销
  • 郑州电商网站设计建立网站要多少钱一年
  • 天津网站制作机玩法部seo是什么的
  • 深圳网站开发网站如何提高seo关键词排名
  • 零基础网站建设教程好看的seo网站
  • 新手做网站什么内容比较好百度seo泛解析代发排名
  • 网站建设制作需要多少钱百度人工服务在线咨询
  • 黄岛网站建设价格口碑营销的经典案例
  • 网站图片怎么做白色背景年度关键词
  • 苏州塔维斯网站建设员工培训