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

邓州市网站建设怎样开电商

邓州市网站建设,怎样开电商,网站开发需要的人员,怎么用自己的电脑建设网站单例模式&#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.yayakq.cn/news/264774/

相关文章:

  • js 网站怎么做中英文drupal搬wordpress
  • 网站建设与管理提纲网络工程师主要做什么
  • 东莞网站制作十强做网站需要多长时间
  • 福田网站建设哪家好wordpress admin空白
  • 网站备案在哪里审批青岛建设工程信息网站
  • 建设项目招标网站织梦零基础做网站
  • 网站中的图片必须用 做吗做系统网站提醒有风险
  • 哪里做网站最好公司装修开工仪式吉利话
  • 宿迁网站建设联系电话网站建设维护合同书
  • 做网站的知识设计国外网站有哪些
  • 男女做那个网站动态图片来宾网站建设公司
  • 滴滴网站建设流程建网站好
  • 模板网站建设前台和后台网站开发的区别
  • 辽源网站seo目前做美术的网站以及app
  • 装修第三方平台网站建设下载网站专用空间
  • 做网站设计服务商网页制作专业知识
  • 菏泽网的网站建设的联系方式商洛网络推广公司
  • 无锡高端网站定制佛山网站建设专业
  • 做国际网站怎么能快速打开西安大雁塔附近酒店推荐
  • 门窗网站免费模板企业网站建立流程的第一步是什么
  • 网站网络广告推广建设银行网站无法访问
  • 网站排名 优帮云wordpress数据库链接不上
  • 翠峦网站建设wordpress 网站收录
  • 沈阳沈阳建设工程信息网站wordpress英文写作插件
  • 青岛开发区网站建设哪家好wordpress小说主体
  • 一个网站的成本北京搜索优化推广公司
  • 品牌设计网站WordPress付费会员主题
  • 网站建设公司案例域名绑定wordpress
  • 天创网站centos和wordpress
  • wordpress主页内容修改郑州seo技术顾问