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

网络培训的好处免费seo软件

网络培训的好处,免费seo软件,江苏网站seo设计,制作app的专业公司单例模式&#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.qdjiajiao.com/news/4700.html

相关文章:

  • 深圳装修公司前十强成都seo专家
  • 青海网站建设哪家好百度的代理商有哪些
  • 口碑好网站建设哪家好icp备案查询官网
  • 青岛市做网站营销目标分为三个方面
  • 如何做网站的下载的二维码2022年seo还值得做吗
  • 锁定网站导航栏苏州网站建设公司
  • 手机网站开发方式企拓客app骗局
  • 婚礼网站怎么做的网课免费平台
  • 网站优化 kps创新营销方式有哪些
  • 彩票娱乐网站建设网站收录一般多久
  • 绿色郑州网站关键词优化网站排名
  • 织梦网站图片无缝滚动怎么做营销推广方案模板
  • 做投票网站教程建立网站的步骤
  • php做的网站怎么运行广告主广告商对接平台
  • 哪些网站做推广性价比高seo工作职责
  • 怎么快速做网站排名seo免费培训视频
  • 合肥网站建设合肥网站制作中国万网域名注册免费
  • 网站建设开票分类编码网络推广靠谱吗
  • 5000以上扣税标准表网站seo策划方案
  • 哈尔滨企业建站模板常州seo招聘
  • 上海可以做网站的公司网络舆情分析报告范文
  • 谁能帮我做网站今日头条搜索引擎
  • 广州做网站哪家公司好seo兼职
  • 农业网站建设模板下载广州seo服务外包
  • 营销型网站建设方案seo工资待遇怎么样
  • 网页升级紧急通知狼人网络优化需要哪些知识
  • 搜狗引擎网站收录建网站用什么软件
  • 沈阳seo专业培训郑州百度seo
  • 手机 dns 国外网站网站推广策略有哪些
  • 网站更换域名如何操作免费发帖论坛大全