• 忘掉天地
  • 仿佛也想不起自己
bingliaolongBingliaolong  2020-05-16 10:15 Aet 隐藏边栏 |   抢沙发  21 
文章评分 7 次,平均分 5.0

概念

  1. 保证一个类仅有一个实例,并提供一个该实例的全局访问点

场景

  1. 应用程序的日志应用
  2. 读取配置文件
  3. 数据库连接池
  4. 多线程线程池
  5. 必须有一个类的实例,并且必须可以从一个著名的访问点访问它
  6. 当唯一的实例可以由子类扩展,并且客户端应该能够使用扩展的实例而无需修改其代码

实现

普通实现

问题:

  1. 可能在多线程中,if判断这个地方产生竞态条件,导致线程不安全

优化版:加锁

优化版:加锁->双检查

C++11实现跨平台

pthread_once函数实现

  1. linux中,pthread_once可以保证某个函数只执行一次

C++11简洁版跨平台方案

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

bingliaolong
Bingliaolong 关注:0    粉丝:0 最后编辑于:2025-03-11
Everything will be better.

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享