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

分类信息网站如何建设网站建设规划怎么写

分类信息网站如何建设,网站建设规划怎么写,进口博览会2022上海,南通房产网文章目录 1、什么是单例2、一个好的单例应该具备的条件3、懒汉模式与饿汉模式4、单例实现#xff1a;线程安全、内存安全的懒汉式单例#xff08;基于C11的智能指针和互斥锁#xff09; 1、什么是单例 单例 Singleton 是设计模式的一种#xff0c;其特点是只提供唯一一个类… 文章目录 1、什么是单例2、一个好的单例应该具备的条件3、懒汉模式与饿汉模式4、单例实现线程安全、内存安全的懒汉式单例基于C11的智能指针和互斥锁 1、什么是单例 单例 Singleton 是设计模式的一种其特点是只提供唯一一个类的实例具有全局变量的特点在任何位置都可以通过接口获取到那个唯一实例。 具体应用场景如 设备管理器。系统中可能有多个设备但是只有一个设备管理器用于管理设备驱动 数据池。用来缓存数据的数据结构需要在一处写多处读取或者多处写多处读取。 2、一个好的单例应该具备的条件 全局只有一个实例static 特性同时禁止用户自己声明并定义实例把构造函数设为 private用户通过接口获取实例使用 static 类成员函数禁止赋值和拷贝线程安全 3、懒汉模式与饿汉模式 懒汉模式 时间换空间故名思义不到万不得已就不会去实例化对象在第一次用到类实例的时候才会去实例化对象多线程情况下会存在线程安全问题需要加互斥锁进行防护。 饿汉模式 空间换时间在单例类定义的时候就进行实例化对象当需要使用时只要通过接口函数直接获取对象。 4、单例实现线程安全、内存安全的懒汉式单例基于C11的智能指针和互斥锁 #include iostream #include memory #include mutexclass Singleton { public:~Singleton() {std::cout destructor called! std::endl;}Singleton(Singleton) delete; // copy constructor cant be calledSingleton operator(const Singleton) delete; // assignment operator cant be calledstatic std::shared_ptrSingleton getInstance() {// 双重锁检测if (m_pInstance nullptr) {std::lock_guardstd::mutex lk(m_mutex);if (m_pInstance nullptr) {m_pInstance std::shared_ptrSingleton(new Singleton);}}return m_pInstance;}private:Singleton() {std::cout constructor called! std::endl;}private:static std::shared_ptrSingleton m_pInstance;static std::mutex m_mutex; };// initialization static variables out of class std::shared_ptrSingleton Singleton::m_pInstance nullptr; std::mutex Singleton::m_mutex;int main() {std::shared_ptrSingleton instance1 Singleton::getInstance();std::shared_ptrSingleton instance2 Singleton::getInstance();return 0; }运行结果 PS E:\Code\VSCode\Demo\build .E:/Code/VSCode/Demo/build/main.exe constructor called! destructor called!基于 shared_ptr用了C比较倡导的 RAII 思想即用对象管理资源。当 shared_ptr 析构的时候new 出来的对象也会被 delete 掉此避免内存泄漏。加了锁使用互斥量来达到线程安全。这里使用了两个 if 判断语句的技术称为双检锁其好处是只有判断指针为空的时候才加锁避免每次调用 get_instance 的方法都加锁毕竟锁的开销还是有点大的。 不足之处在于 使用智能指针会要求用户也得使用智能指针非必要不应该提出这种约束使用锁也有开销并且在某些平台与编译器和指令集架构有关双检锁会失效
http://www.w-s-a.com/news/40388/

相关文章:

  • 网站动态logo怎么做织梦移动端网站怎么做
  • 三亚城乡建设局网站app下载安装官方网站
  • 公司被其它人拿来做网站郑州哪家做网站最好
  • 山东省建设厅官方网站抖音代运营业务介绍
  • 网站制作 牛商网wordpress商城 微信支付
  • 平面设计培训网站建文帝网站建设
  • python网站建设佛山乐从网站建设
  • 网站 免费 托管运营app软件大全
  • 爱网站找不到了网站设计制作要交印花税
  • 分销平台是什么意思网站如何从行为数据进行优化
  • 做网站公司职务做民俗酒店到哪些网站推荐
  • 从0到建网站wordpress导航主题模板下载地址
  • 以3d全景做的网站统计网站的代码
  • 北辰网站建设WordPress换主题文件夹
  • 做网站的合同范文百度分析工具
  • 深圳企业网站制作公司单位注册wordpress发送邮件
  • 兰州专业网站建设团队wordpress 拉取点击数
  • 基于php房产网站开发ppt模板免费下载第一ppt
  • 网站盈利模式分析怎么做山东营销网站建设联系方式
  • 二级网站建设 知乎我的个人主页模板
  • wordpress小说网站模板下载地址百度优化服务
  • 云南网页设计制作seo计费系统源码
  • 屏蔽ip网站吗行业外贸网站建设
  • 河北城乡建设学校网站常州网站建设公司平台
  • 合肥网站建设市场分析网站收录后怎么做排名
  • 湖南企业网站建设如何推广手机网站
  • 网站建设项目经历网站推广服务 商务服务
  • 加强网站的建设福州seo排名外包
  • 做婚庆找什么网站有专门为个人网站做推广的吗
  • 网站搭建要求模板学编程需要英语基础吗