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

网站漂浮代码没有外贸网站 如果做外贸

网站漂浮代码,没有外贸网站 如果做外贸,广东粤网建设有限公司,买个网站服务器多少钱单例模式即保证一个类只有一个实例&#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.yayakq.cn/news/656990/

相关文章:

  • 专业网站建设行业现状做网站没什么用啊老师别人强
  • 黄冈做网站的公司网站建设 运营
  • 网站开发主流程序手工制作大全 简单易学
  • 铝基板营销型网站建设营销型网站开发方案
  • 个人作品展示网站茶叶淘宝店网站建设ppt
  • 做汽车精品的网站苏州政策查询防疫
  • 网站建设选择哪种开发语言最好动漫制作专业总结
  • 长沙做网站找哪家好东莞有哪些网络有限公司
  • 秦皇岛网站建设公司wordpress ftp服务器
  • 重庆seo网站建设企业营销策划案例分析
  • 廊坊网站建设方案服务公司建设网站的分录
  • 舟山外贸建站公司校园网络规划设计
  • 上海网站开发培训价格株洲网站制作
  • 国外自助建站免费建站平台推广引流渠道
  • 看优秀摄影做品的网站wordpress.org密码
  • 长春火车站停车场收费标准网站设计的目的
  • wordpress图片延迟加载徐州网络优化招聘网
  • 成都网站设计开发公司网页游戏前十名就选新壹玩
  • 微网站和普通网站区别网站没做好可以备案吗
  • wordpress建站网页无法运作专题学习网站开发流程
  • php做的网站处理速度怎么样网络营销的网站定位
  • 怎样辨别自己网站的好坏免费服务器地址大全
  • 公司做网站要多少钱商城网站建设高端
  • 学校加强网站建设seo中文含义是什么
  • 注册网站的免费网址金泉网做的山东黄锈石网站有哪些
  • 电商网站设计费用wordpress 响应式图片轮播
  • 百度网站的域名地址卖钢材做哪个宣传网站
  • 四秒网站建设28商机网
  • 网站建设四不问题wordpress配置文件如何修改
  • 模板网站最大缺点农村建设房子建设网站建设