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

做粉丝网站wordpress网站图片丢失

做粉丝网站,wordpress网站图片丢失,京东网站开发,icp备案信息查询线程安全 单例模式在单线程中#xff0c;当然是安全的。但是如果在多线程中#xff0c;由于并行判断#xff0c;可能会导致创建多个实例。那么如何保证在多线程中单例还是只有一个实例呢? 常见的三种方式: 局部静态变量 原理和饿汉模式相似#xff0c;利用static只会初始…线程安全 单例模式在单线程中当然是安全的。但是如果在多线程中由于并行判断可能会导致创建多个实例。那么如何保证在多线程中单例还是只有一个实例呢? 常见的三种方式: 局部静态变量 原理和饿汉模式相似利用static只会初始化一次的特性并且在第一次调用的情况下才会被初始化。推荐使用 class Singleton { private:     Singleton() { }; public:     static Singleton* getInstance() {         static Singleton *instance new Singleton();         return instance;     } }; 饿汉模式 原理:利用static在程序编译的时候就调用构造函数实现单例这样做的优点是保证线程安全但是缺点就是无论后续是否用到在编译的时候就会创建会导致启动性能降低。 实现方法: class Singleton_Hungry { public:     static Singleton_Hungry* getInstance() {         return singleton;     } private:     Singleton_Hungry() {         cout Hungry creat. endl;     }     static Singleton_Hungry* singleton; }; Singleton_Hungry* Singleton_Hungry::singleton new Singleton_Hungry(); 懒汉模式 原理:利用线程锁在获取实例的时候判断实例加上线程锁保证判断的条件只允许一个线程操作。利用锁也可以保证单例只有一个实例。 实现方法: #include mutex std::mutex mu; class Singleton_Lazy { public:      static Singleton_Lazy* getInstance() {         if (singleton NULL) {             mu.lock();//打开锁             if (singleton NULL) {                 singleton new Singleton_Lazy();             }             mu.unlock();//关闭锁         }         return singleton;      } private:     Singleton_Lazy() {         cout Lazy creat. endl;     }     static Singleton_Lazy* singleton; }; Singleton_Lazy* Singleton_Lazy::singleton NULL; 实践验证 在linux系统上通过命令行g single.cpp --stdc11 -lpthread编译 #include iostream #include mutex #include thread #include unistd.h using namespace std; mutex mu; class Singleton_Hungry { public:     static Singleton_Hungry* getInstance() {         return singleton;     } private:     Singleton_Hungry() {         cout Hungry creat. endl;     }     static Singleton_Hungry* singleton; }; Singleton_Hungry* Singleton_Hungry::singleton new Singleton_Hungry(); class Singleton_Lazy { private:     Singleton_Lazy() {         cout Lazy creat. endl;     }     static Singleton_Lazy* singleton; public:      static Singleton_Lazy* getInstance() {         if (singleton NULL) {             //mu.lock();//打开锁             if (singleton NULL) {                 singleton new Singleton_Lazy();             }             //mu.unlock();//关闭锁         }         return singleton;      } }; Singleton_Lazy* Singleton_Lazy::singleton NULL; void thr(int t) {     cout t pthread id: pthread_self() endl;     for(int i 0; i 3; i) {         Singleton_Lazy *lazy Singleton_Lazy::getInstance();         Singleton_Hungry *hungry Singleton_Hungry::getInstance();         cout t lazy addr: lazy endl;         cout t hungry addr: hungry endl;     } } int main() {     coutmain process id: getpid()endl;     coutmain pthread id: pthread_self()endl;     thread thread1(thr, 1);     thread thread2(thr, 2);     thread1.join();     thread2.join();     return 0; } 结果分析 结果和预想一致饿汉模式在程序编译阶段调用构造函数懒汉模式在调用的时候创建如果不加线程锁会导致创建多个实例。 【C】保证线程安全的单例模式_c 线程安全单例模式-CSDN博客
http://www.hkea.cn/news/14483095/

相关文章:

  • 百度视频推广seo外链要做些什么
  • 织梦怎么制作网站百度普通收录
  • ip怎么做网站大庆做网站最厉害的人
  • 顺德做网站推广哪家好百度云官网登录入口
  • 关于门户网站建设作品集模板网站
  • 男女做暖暖暖网站性价比高的vps
  • 广西兴业县建设局网站阿里巴巴1688网页版
  • ie的常用网站是wordpress
  • 苏州网站推广软件情感营销经典案例
  • 做微秀的网站网站建设 外文文献
  • 苏州网站推广网站开发聊天室
  • 建立搜索引擎网站江苏苏州
  • 网站建设-部署与发布的题目如何做供求网站
  • 广州知名网站建设怎么申请自媒体平台账号
  • 布吉商城网站建设flash可以做网站
  • 公司建设的网站属于无形资产吗山东省住房城乡建设部网站首页
  • 宁波网站备案幕布拍照计算机网站设计论文
  • 深圳个人网站建设农业行业网站模板
  • 做试卷的网站空间网站打不开
  • 网站模块源码企业网站排名优化哪家好
  • 辽宁建设资质申报网站陕西省住建厅网站官网
  • 合肥公司制作网站的小型公司网站建设论文
  • 旅游公共信息服务网站建设及服务质量标准免费的网络推广
  • 设计师配色网站模板网点地址信息错误
  • 特价网站建设费用wordpress推荐
  • 做暧暧网站在线看网站建设与O2O的应用
  • 做网站交互效果用什么软件建网站要多少钱一年
  • 如何绑定网站域名WordPress之类的
  • 如何做好网站wordpress 分类页评论框
  • 求一个好看的网站做网站的名字大全