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

国内哪个推广网站做的好蚌埠市建设管理局官方网站

国内哪个推广网站做的好,蚌埠市建设管理局官方网站,做那个的网站,阿里建站平台官网单例模式 方法1:C11 线程不安全懒汉模式(不推荐) 懒汉式单例模式在第一次使用时才创建实例,但这种方式在多线程环境下可能会出现问题。 class Singleton { private:static Singleton* instance; // 静态指针,用于存储…

单例模式


方法1:C++11 线程不安全懒汉模式(不推荐)

懒汉式单例模式在第一次使用时才创建实例,但这种方式在多线程环境下可能会出现问题。

class Singleton {
private:static Singleton* instance; // 静态指针,用于存储单例对象Singleton() {} // 私有构造函数,防止外部直接构造public:static Singleton* getInstance() {if (instance == nullptr) { // 检查是否已经创建了实例instance = new Singleton();}return instance;}
};// 初始化静态成员变量
Singleton* Singleton::instance = nullptr;int main() {Singleton* s1 = Singleton::getInstance();Singleton* s2 = Singleton::getInstance();// s1 和 s2 指向同一个对象return 0;
}

方法2:懒汉式单例模式(线程安全)

为了确保线程安全,可以在getInstance函数中使用互斥锁(std::mutex)

#include <mutex>class Singleton {
private:static Singleton* instance; // 静态指针,用于存储单例对象static std::mutex mutex_; // 互斥锁Singleton() {} // 私有构造函数,防止外部直接构造public:static Singleton* getInstance() {std::lock_guard<std::mutex> lock(mutex_); // 加锁if (instance == nullptr) { // 检查是否已经创建了实例instance = new Singleton();}return instance;}
};// 初始化静态成员变量
Singleton* Singleton::instance = nullptr;
std::mutex Singleton::mutex_;int main() {Singleton* s1 = Singleton::getInstance();Singleton* s2 = Singleton::getInstance();// s1 和 s2 指向同一个对象return 0;
}

方法3:C++11 基于局部静态变量的单例模式

利用 C++11 的 static 特性实现线程安全的延迟初始化:

class Singleton {
public:// 删除拷贝构造和赋值运算符Singleton(const Singleton&) = delete;Singleton& operator=(const Singleton&) = delete;// 全局访问点static Singleton& getInstance() {static Singleton instance; // C++11保证线程安全的静态局部变量初始化return instance;}private:Singleton() {}                  // 私有构造函数~Singleton() {}                 // 私有析构函数
};// 使用示例:
Singleton& obj = Singleton::getInstance();

优点

  • 线程安全(C++11标准保证)
  • 延迟初始化(首次调用时创建)
  • 代码简洁

方法4:双重检查锁定(传统线程安全)

适用于 C++11 之前的版本:

#include <mutex>
#include <atomic>class Singleton {
public:static Singleton* getInstance() {Singleton* tmp = instance.load(std::memory_order_acquire);if (tmp == nullptr) {                     // 第一次检查std::lock_guard<std::mutex> lock(mutex);tmp = instance.load(std::memory_order_relaxed);if (tmp == nullptr) {                 // 第二次检查tmp = new Singleton();instance.store(tmp, std::memory_order_release);}}return tmp;}// 删除拷贝和赋值Singleton(const Singleton&) = delete;Singleton& operator=(const Singleton&) = delete;private:Singleton() {}                                // 私有构造函数~Singleton() {}                               // 私有析构函数static std::atomic<Singleton*> instance;      // 原子指针static std::mutex mutex;                      // 互斥锁
};// 初始化静态成员
std::atomic<Singleton*> Singleton::instance{nullptr};
std::mutex Singleton::mutex;// 使用示例:
Singleton* obj = Singleton::getInstance();

优点

  • 线程安全
  • 延迟初始化
  • 高性能(避免每次调用加锁)

方法5:饿汉模式(程序启动时初始化)

线程安全但提前初始化:

class Singleton {
public:static Singleton& getInstance() {return instance; // 直接返回已初始化的实例}// 删除拷贝和赋值Singleton(const Singleton&) = delete;Singleton& operator=(const Singleton&) = delete;private:Singleton() {}                                // 私有构造函数~Singleton() {}                               // 私有析构函数static Singleton instance;                   // 程序启动时初始化
};// 初始化静态成员(在.cpp文件中)
Singleton Singleton::instance;// 使用示例:
Singleton& obj = Singleton::getInstance();

优点

  • 线程安全
  • 实现简单

缺点

  • 程序启动时即初始化,可能浪费资源
  • 无法处理依赖其他模块初始化的情况

单例模式的关键点

  1. 构造函数私有化:禁止外部创建实例
  2. 删除拷贝和赋值:防止通过拷贝创建新对象
  3. 全局访问点:静态方法提供唯一访问入口
  4. 线程安全:根据场景选择实现方式

注意事项

  • 避免滥用单例模式(可能导致代码耦合度高)
  • 单例对象的销毁需要谨慎处理(一般程序结束时自动释放)
  • 多线程环境下优先使用 C++11 的 static 实现
http://www.dtcms.com/wzjs/563295.html

相关文章:

  • 网站开发搭建合同范本有没有像一起做网店做男装的网站
  • 网站制作厂家公司网站设计有哪些使用技巧呢
  • 网站制作价格公司大数据培训机构可信吗
  • 外贸电子网站最好的小型 网站开发系统
  • 网站上线过程网站数据库一般多大
  • 郑州专业网站建设搭建公司注册公司咨询
  • 湖南官网网站推广软件郑州做企业网站哪家好
  • 网站建设的相关书籍企业网站该怎么做
  • 拍卖网站模板下载oa系统服务器地址在哪里看
  • 长沙创建一个网站需要多少钱微商城网站建设行情
  • 免费创办网站长丰县住房和建设局网站
  • html做的网站怎么发布电子商务网站的数据库怎么做
  • 做纺织生意用什么网站好流量推广是什么意思
  • 安卓盒子 做网站丰润网站建设
  • 网站月流量是什么意思闽江学院教务管理系统
  • 做网站的公司叫什么名字好同城信息服务平台
  • 怎么做新网站的推广电商网站设计论文
  • 网站开发的软硬件环境泰安企业建站公司排行
  • 河南制作网站公司企业邮箱
  • 柳州建设厅官方网站在百度上建网站
  • 阳江市建设局网站怎么弄一个网站
  • 付费网站怎么制作wordpress 注册 登陆
  • 上海十大互联网公司排名深圳seo论坛
  • 网站关停怎么做移动互联网开放合作联盟
  • 衡水做网站建设公司商业策划书范文6篇
  • 企业网站的建设与应用开题报告企业文化展厅设计
  • 哪个网站专注做微信模板有什么好的推广平台
  • 网站如何接广告赚钱请私人做网站风险
  • wordpress博客主题虎嗅长春seo网站优化
  • 韩国明星都在那个网站做直播wordpress 金融