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

上海家政公司排名seo分析报告怎么写

上海家政公司排名,seo分析报告怎么写,优化网站有哪些方法,招标网站官网单例模式即保证一个类只有一个实例&#xff0c;并提供一个访问该单例的接口。 实例 1.懒汉式 用的时候才创建单例&#xff0c;“懒”。 Singleton.h #ifndef SINGLETON_H_ #define SINGLETON_H_#include <iostream> #include <string> #include <mutex>…

单例模式即保证一个类只有一个实例,并提供一个访问该单例的接口。

实例

1.懒汉式

用的时候才创建单例,“懒”。

Singleton.h

#ifndef SINGLETON_H_
#define SINGLETON_H_#include <iostream>
#include <string>
#include <mutex>class Singleton {public:static Singleton* GetInstance() {if (instance_ == nullptr) {// 加锁保证多个线程并发调用getInstance()时只会创建一个实例m_mutex_.lock();if (instance_ == nullptr) {instance_ = new Singleton();}m_mutex_.unlock();}return instance_;}private:Singleton() {}static Singleton* instance_;static std::mutex m_mutex_;
};#endif  // SINGLETON_H_

这就是双重检验锁,保障了线程安全。第一个判空可加速判断是否已有单例,第二个锁内的判空是为了解决多线程问题(两个线程同时走到lock,且instance_都为nullptr)。

Singleton.cpp

#include "Singleton.h"// 静态变量instance初始化不要放在头文件中, 如果多个文件包含singleton.h会出现重复定义问题
Singleton* Singleton::instance_ = nullptr;
std::mutex Singleton::m_mutex_;

main.cpp

#include <iostream>
#include "Singleton.h"int main() {Singleton *s1 = Singleton::GetInstance();Singleton *s2 = Singleton::GetInstance();std::cout << "s1地址: " << s1 << std::endl;std::cout << "s2地址: " << s2 << std::endl;return 0;
}

编译运行:

$g++ -g main.cpp Singleton.cpp -std=c++11 -o singleton
$./singleton 
s1地址: 0x95a040
s2地址: 0x95a040

2. 饿汉式

类初始化就创建单例,GetInstance()只是获取动作,“饿”。 

Singleton.h

#ifndef SINGLETON_H_
#define SINGLETON_H_class Singleton {public:static Singleton* GetInstance() {return instance_;}private:Singleton() {}static Singleton* instance_;
};#endif  // SINGLETON_H_

Singleton.cpp

#include "Singleton.h"Singleton* Singleton::instance_ = new Singleton();

main.cpp

#include <iostream>
#include "Singleton.h"int main() {Singleton *s1 = Singleton::GetInstance();Singleton *s2 = Singleton::GetInstance();std::cout << "s1地址: " << s1 << std::endl;std::cout << "s2地址: " << s2 << std::endl;return 0;
}

编译运行:

$g++ -g main.cpp Singleton.cpp -std=c++11 -o singleton
$./singleton 
s1地址: 0x18a8040
s2地址: 0x18a8040

3. Meyers' Singleton

Meyers' Singleton是Scott Meyers提出的C++单例的推荐写法。它将单例对象作为局部static对象定义在函数内部: 

#ifndef SINGLETON_H_
#define SINGLETON_H_class Singleton {public:static Singleton& GetInstance() {static Singleton instance;return instance;}Singleton(const Singleton&) = delete;Singleton& operator=(const Singleton&) = delete;private:Singleton() {}
};#endif  // SINGLETON_H_

需要C11支持(C11保证static成员初始化的线程安全)

http://www.dinnco.com/news/83366.html

相关文章:

  • 阿里云网站更换域名蜂蜜网络营销推广方案
  • 哪些行业做网站推广的多廊坊seo排名霸屏
  • 微信网站什么做无人区在线观看高清1080
  • 常州网站排名提升百度关键词热度
  • 长沙手机网站公司专门做推广的公司
  • 中能建西北城市建设有限公司网站湘潭网站设计外包服务
  • 前端自己写代码建网站要花多少钱泰安百度公司代理商
  • 陕西建设监理协会网站安装百度
  • ps做设计想接私活在什么网站百度官网推广平台电话
  • dw网站建设代码深圳推广网络
  • 个人企业网站青岛疫情最新情况
  • 怎么才能搜索到自己做的网站360搜索指数
  • 电话销售做网站的术语网站内链优化
  • 只做传统嫁衣网站人工智能培训班
  • wordpress 首页url湖北seo网站推广
  • 最新疫情最新通知免费智能seo收录工具
  • 网站制作老了全国疫情最新情况最新消息今天
  • 可以找厂家的网站网络营销成功案例分析其成功原因
  • vr模式的网站建设公司sem广告
  • 广州市企业网站建设平台网络营销的优势是什么
  • 网站建设开发有限公司备案域名
  • 陕西省交通建设集团公司网站手机游戏性能优化软件
  • 投放广告网站如何做营销活动
  • 怎么网站设计东莞seo外包平台
  • 云南网站设计企业网络规划与设计
  • 站长工具ping什么优化
  • 常德市建设工程造价信息网简述seo的基本步骤
  • 英文网站设计免费广告网
  • 网站图片倒计时怎么做的佛山网页搜索排名提升
  • 网站被模仿谷歌seo服务