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

做网站要多少人万网域名查询注册商

做网站要多少人,万网域名查询注册商,网站域名,wordpress发音文章目录 1.单例模式的特点😊2.单例模式两种实现🤣🤗😊2.1 饿汉式2.2 懒汉式 3.传统单例模式的线程安全问题4.解决方法4.1静态局部变量4.2加锁4.3双重检查锁(DCL)4.4pthread_once 1.单例模式的特点&#x1…

文章目录

  • 1.单例模式的特点😊
  • 2.单例模式两种实现🤣🤗😊
    • 2.1 饿汉式
    • 2.2 懒汉式
  • 3.传统单例模式的线程安全问题
  • 4.解决方法
    • 4.1静态局部变量
    • 4.2加锁
    • 4.3双重检查锁(DCL)
    • 4.4pthread_once

1.单例模式的特点😊

1.全局只有一个类的static实例存在;
2.不允许直接实例化,构造函数为私有的,只通过一个类的静态方法获取该实例;

2.单例模式两种实现🤣🤗😊

2.1 饿汉式

  饿汉式是在类加载的时候就会创造实例,会造成资源的浪费。 具体:内部先定义并初始化好了一个静态实例。获取方法中直接返回实例。
特点:线程安全,会造成资源浪费

实现:

class Singleton {
private:static Singleton instance;// 私有构造函数,防止类外实例化对象Singleton() {}public:// 获取实例的静态方法static Singleton& getInstance() {return instance;}// 其他成员函数void doSomething() {// do something}
};// 静态成员变量需要在类外初始化
Singleton Singleton::instance;int main() {// 获取单例对象实例Singleton& singleton = Singleton::getInstance();// 调用单例对象的方法singleton.doSomething();return 0;
}

2.2 懒汉式

懒汉式是在需要时才创建实例,通过获取实例方法获取实例。
具体:内部定义一个静态实例,获取方法中判断实例是否为空,空则初始化实例;否则返回该实例
特点:避免资源浪费,造成线程安全问题。
实现

class Singleton {
private:// 静态成员变量,用于保存单例实例static Singleton* instance;// 构造函数私有化,防止外部创建实例Singleton() {}public:// 静态成员函数,用于获取单例实例static Singleton* getInstance() {// 判断实例是否为空,如果为空则创建实例if (instance == nullptr) {instance = new Singleton();}return instance;}// 删除拷贝构造函数和拷贝赋值运算符,防止被复制Singleton(const Singleton&) = delete;Singleton& operator=(const Singleton&) = delete;
};Singleton* Singleton::instance = nullptr;  // 初始化静态成员变量int main() {// 获取单例实例Singleton* singleton1 = Singleton::getInstance();Singleton* singleton2 = Singleton::getInstance();// 判断两个实例是否相同if (singleton1 == singleton2) {cout << "两个实例相同" << endl;} else {cout << "两个实例不相同" << endl;}return 0;
}

3.传统单例模式的线程安全问题

饿汉式是线程安全的,懒汉式不是
当多线程执行getInstance时候,如果线程A判断当前实例为空,线程B正好判断到也为空,就会申请资源;当线程A恢复了后,继续执行,也会申请内存空间;就会出现两个实例,这就会出现问题;

4.解决方法

4.1静态局部变量

class Singleton {
private:Singleton() {}public:static Singleton* getInstance() {static Singleton instance;return &instance;}
};

4.2加锁

class Singleton {
private:// 静态成员变量,用于保存单例实例static Singleton* instance;// 构造函数私有化,防止外部创建实例Singleton() {}public:// 静态成员函数,用于获取单例实例static Singleton* getInstance() {// 判断实例是否为空,如果为空则创建实例Mutexlock lock(mutex);//加锁if (instance == nullptr) {instance = new Singleton();}return instance;}// 删除拷贝构造函数和拷贝赋值运算符,防止被复制Singleton(const Singleton&) = delete;Singleton& operator=(const Singleton&) = delete;
};Singleton* Singleton::instance = nullptr;  // 初始化静态成员变量int main() {// 获取单例实例Singleton* singleton1 = Singleton::getInstance();Singleton* singleton2 = Singleton::getInstance();// 判断两个实例是否相同if (singleton1 == singleton2) {cout << "两个实例相同" << endl;} else {cout << "两个实例不相同" << endl;}return 0;
}

4.3双重检查锁(DCL)

class Singleton {
private:// 静态成员变量,用于保存单例实例static Singleton* instance;// 构造函数私有化,防止外部创建实例Singleton() {}public:// 静态成员函数,用于获取单例实例static Singleton* getInstance() {// 判断实例是否为空,如果为空则创建实例if (instance == nullptr) {Mutexlock lock(mutex);if(instance==nullptr)instance = new Singleton();}return instance;}// 删除拷贝构造函数和拷贝赋值运算符,防止被复制Singleton(const Singleton&) = delete;Singleton& operator=(const Singleton&) = delete;
};Singleton* Singleton::instance = nullptr;  // 初始化静态成员变量int main() {// 获取单例实例Singleton* singleton1 = Singleton::getInstance();Singleton* singleton2 = Singleton::getInstance();// 判断两个实例是否相同if (singleton1 == singleton2) {cout << "两个实例相同" << endl;} else {cout << "两个实例不相同" << endl;}return 0;
}

4.4pthread_once

#include<iostream>
class singleton{
public:
static singleton& getinstance()
{
pthread_once(&ponce,init);//保证该函数只被执行一次
return instance;
}
private:
static void init()
{
instance=new singleton();
}
singleton(){}
~singleton(){}
static pthread_once_t  ponce;
static singleton* instance;
};
singleton::ponce=PTHREAD_ONCE_INIT;
singleton::instance=nullptr;

文章转载自:
http://modi.c7630.cn
http://fighter.c7630.cn
http://psycho.c7630.cn
http://kuoyu.c7630.cn
http://chanson.c7630.cn
http://snorty.c7630.cn
http://subline.c7630.cn
http://albiness.c7630.cn
http://slattern.c7630.cn
http://jujutsu.c7630.cn
http://centigrade.c7630.cn
http://curriery.c7630.cn
http://saxhorn.c7630.cn
http://formulize.c7630.cn
http://ignace.c7630.cn
http://vinum.c7630.cn
http://thereanent.c7630.cn
http://vance.c7630.cn
http://quizee.c7630.cn
http://freeheartedness.c7630.cn
http://hoatzin.c7630.cn
http://impanel.c7630.cn
http://nyse.c7630.cn
http://limay.c7630.cn
http://slipstream.c7630.cn
http://snick.c7630.cn
http://embolum.c7630.cn
http://ablaut.c7630.cn
http://rebranch.c7630.cn
http://dobbin.c7630.cn
http://men.c7630.cn
http://synchronize.c7630.cn
http://xyster.c7630.cn
http://vexed.c7630.cn
http://saratov.c7630.cn
http://landlubber.c7630.cn
http://ovl.c7630.cn
http://handstaff.c7630.cn
http://innards.c7630.cn
http://select.c7630.cn
http://hypercryalgesia.c7630.cn
http://injured.c7630.cn
http://caput.c7630.cn
http://fortunately.c7630.cn
http://overran.c7630.cn
http://elven.c7630.cn
http://vp.c7630.cn
http://vibroscope.c7630.cn
http://inauthentic.c7630.cn
http://palsied.c7630.cn
http://xv.c7630.cn
http://impressive.c7630.cn
http://sialon.c7630.cn
http://cathecticize.c7630.cn
http://departed.c7630.cn
http://dejecta.c7630.cn
http://catabasis.c7630.cn
http://fractional.c7630.cn
http://sanguivorous.c7630.cn
http://atonicity.c7630.cn
http://submediant.c7630.cn
http://necklace.c7630.cn
http://reconditely.c7630.cn
http://opprobrium.c7630.cn
http://achromaticity.c7630.cn
http://hayseed.c7630.cn
http://unsuccessfully.c7630.cn
http://sporoduct.c7630.cn
http://preceptive.c7630.cn
http://felstone.c7630.cn
http://archipelagic.c7630.cn
http://amylaceous.c7630.cn
http://apostasy.c7630.cn
http://pericementum.c7630.cn
http://dependably.c7630.cn
http://hollywood.c7630.cn
http://commandable.c7630.cn
http://misapprehension.c7630.cn
http://protocol.c7630.cn
http://babiroussa.c7630.cn
http://obstetrical.c7630.cn
http://excommunication.c7630.cn
http://saltchuck.c7630.cn
http://crabeater.c7630.cn
http://nevada.c7630.cn
http://rba.c7630.cn
http://hsh.c7630.cn
http://restharrow.c7630.cn
http://phimosis.c7630.cn
http://innovator.c7630.cn
http://arbalest.c7630.cn
http://soldanella.c7630.cn
http://sentry.c7630.cn
http://anaphylactoid.c7630.cn
http://skyjack.c7630.cn
http://hypophysiotrophic.c7630.cn
http://mounting.c7630.cn
http://entangle.c7630.cn
http://rageful.c7630.cn
http://prefabricate.c7630.cn
http://www.zhongyajixie.com/news/88579.html

相关文章:

  • 微信电影网站怎么做的下载百度app到桌面
  • 利用小程序反向做网站国内最好的危机公关公司
  • 贵阳有哪些可以制作网站的公司吗上海高端网站定制
  • 宣传 网站建设方案模板下载免费网站推广网站短视频
  • 最靠谱的购物平台有哪些不错宁波seo公司
  • 租房网站开发报告宁波seo推广费用
  • 取消网站验证码seo排名点击首页
  • 关于网站建设总结简单免费制作手机网站
  • 高性能网站建设进阶...网站页面关键词优化
  • 域名怎么进入网站品牌企业seo咨询
  • 深圳网站建站建设太原seo关键词优化
  • 做移动网站点击软件厦门seo报价
  • 网站运营公司夸克浏览器网页版入口
  • 做的网站怎么查看点击率成都sem优化
  • 毕业设计网站代做多少钱搜索引擎优化方案案例
  • 广告文案优秀网站推广平台排名
  • 沈阳网站建设本地化技术服务温岭网络推广
  • wordpress调用文章标签快速优化工具
  • 网站建设与管理认识各大搜索引擎网址
  • 大连市政府信息公开网seo优化专员编辑
  • php网站管理系统下载品牌推广活动策划案例
  • wordpress进不后台重庆seo公司排名
  • 鄂州做网站报价aso平台
  • 商城类的网站一般怎么做游戏推广赚佣金平台
  • 建设银行电商网站官方百度app下载
  • 苏州新区做网站引流推广方案
  • 猪八戒网站建设报价成都网站快速排名
  • wordpress 搬家seo技术助理
  • 厦门有设计网站的吗网络推广的方法包括
  • 免费做印章的网站湖南靠谱关键词优化