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

天津网站制作培训阿里云linux服务器搭建wordpress

天津网站制作培训,阿里云linux服务器搭建wordpress,什么样的网页设计好,汽车网站页面设计c模式之单例模式详解 1.概念2.懒汉模式示例#xff08;缺点#xff09;3.懒汉模式线程安全4.饿汉式创建单例5.饿汉模式线程示例 1.概念 单例模式是指在整个系统生命周期内#xff0c;保证一个类只能产生一个实例#xff0c;确保该类的唯一性. 使用单例两个原因#xff1a… c模式之单例模式详解 1.概念2.懒汉模式示例缺点3.懒汉模式线程安全4.饿汉式创建单例5.饿汉模式线程示例 1.概念 单例模式是指在整个系统生命周期内保证一个类只能产生一个实例确保该类的唯一性. 使用单例两个原因 1.节省资源。一个类只有一个实例不存在多份实例节省资源。 2.方便控制。在一些操作公共资源的场景时避免了多个对象引起的复杂操作 单例类的特点 构造函数和析构函数为私有类型目的是禁止外部构造和析构。拷贝构造函数和赋值构造函数是私有类型目的是禁止外部拷贝和赋值确保实例的唯一性。类中有一个获取实例的静态方法可以全局访问。 2.懒汉模式示例缺点 getInstance函数使用了懒汉式单例模式的实现方式。它首先检查静态成员变量instance是否为空如果为空则创建一个新的实例否则直接返回已有的实例。这种实现方式在单线程环境下是有效的但在多线程环境下可能会导致线程安全问题。 在多线程环境下多个线程可能会同时检查到instance为空然后同时创建多个实例违背了单例模式的初衷。为了解决这个问题我们需要在创建实例时添加同步机制以确保只有一个线程能够创建实例。 #include iostream #include mutex #include ctime #include vector using namespace std;void sleep(int time) { clock_t head clock(); while (clock() - head time) {} }class Singleton { private:static Singleton* instance; // 静态成员变量用于保存单例实例Singleton() {} // 私有构造函数防止外部实例化public:static Singleton* getInstance() {if (instance nullptr) {instance new Singleton();}return instance;}void someFunction() {// 单例的其他成员函数cout HELLO WORLD endl;} };Singleton* Singleton::instance nullptr; // 初始化静态成员变量int main() {Singleton* obj1 Singleton::getInstance();obj1-someFunction();Singleton* obj2 Singleton::getInstance();obj2-someFunction();// obj1和obj2是同一个实例return 0; } 3.懒汉模式线程安全 添加了一个静态成员变量mutex作为互斥锁用于线程同步。在getInstance函数中我们首先进行一次非线程安全的检查如果instance为空才会获取互斥锁并再次检查instance是否为空。这样可以确保只有一个线程能够创建实例。 使用了std::lock_guard来自动管理锁的加锁和解锁以避免手动处理锁的释放。这样可以确保在任何情况下无论是正常返回还是发生异常都会自动释放锁。 这个改进后的示例提供了一种线程安全的懒汉式单例模式实现方式可以在多线程环境下正常工作 #include iostream #include mutex using namespace std;class Singleton { private:static Singleton* instance; // 静态成员变量用于保存单例实例static std::mutex mutex; // 互斥锁用于线程同步Singleton() {} // 私有构造函数防止外部实例化public:static Singleton* getInstance() {if (instance nullptr) {lock_guardstd::mutex lock(mutex); // 加锁if (instance nullptr) {instance new Singleton();}}return instance;}void someFunction() {// 单例的其他成员函数cout mutex hello world endl;} };Singleton* Singleton::instance nullptr; // 初始化静态成员变量 std::mutex Singleton::mutex; // 初始化互斥锁int main() {Singleton* obj1 Singleton::getInstance();obj1-someFunction();Singleton* obj2 Singleton::getInstance();obj2-someFunction();// obj1和obj2是同一个实例return 0; } 4.饿汉式创建单例 它是一种在程序启动时就创建实例的单例模式。下面是一个简单的示例来说明如何实现C的饿汉式单例模式。 Singleton类使用饿汉式的方式创建实例。在静态成员变量instance的定义处我们直接使用new操作符创建了一个Singleton的实例并将其赋值给instance。这样在程序启动时实例就会被创建并初始化。 在getInstance函数中我们直接返回已经创建好的实例而无需再进行实例化。 在main函数中我们通过调用Singleton::getInstance()来获取单例实例并调用其成员函数。由于使用了饿汉式创建实例obj1和obj2实际上是同一个实例。 饿汉式在程序启动时就创建了实例因此会占用一定的内存空间。此外如果实例的创建过程较为复杂或耗时可能会影响程序的启动速度。因此在选择单例模式的实现方式时需要根据具体的需求和场景来决定使用懒汉式还是饿汉式。 #include iostream using namespace std;class Singleton { private:static Singleton* instance; // 静态成员变量用于保存单例实例Singleton() {} // 私有构造函数防止外部实例化public:static Singleton* getInstance() {return instance;}void someFunction() {cout Hungry Han style instance endl;} };Singleton* Singleton::instance new Singleton(); // 在静态成员变量初始化时创建实例int main() {Singleton* obj1 Singleton::getInstance();obj1-someFunction();Singleton* obj2 Singleton::getInstance();obj2-someFunction();// obj1和obj2是同一个实例return 0; }5.饿汉模式线程示例 #include iostream #include thread using namespace std;class ThreadSingleton { private:static ThreadSingleton* instance; // 静态成员变量用于保存单例实例ThreadSingleton() {} // 私有构造函数防止外部实例化public:static ThreadSingleton* getInstance() {return instance;}void calculateSquareArea(double side) {double area side * side;std::cout The area of the square is: area std::endl;} };ThreadSingleton* ThreadSingleton::instance new ThreadSingleton(); // 在静态成员变量初始化时创建实例int main() {std::thread t1([]() {ThreadSingleton* obj1 ThreadSingleton::getInstance();obj1-calculateSquareArea(5);});std::thread t2([]() {ThreadSingleton* obj2 ThreadSingleton::getInstance();obj2-calculateSquareArea(8);});t1.join();t2.join();return 0; }
http://www.zqtcl.cn/news/719555/

相关文章:

  • 淮南医院网站建设班级网站开发报告
  • 东莞营销网站建设哪家好微信api接口
  • 凡科建站怎么导出网页wordpress视频采集插件
  • 个人介绍网站源码云主机上传网站
  • app推广平台网站系统登录入口
  • 做公司宣传册的网站成crm网
  • 新乡公司做网站军事新闻内容摘抄
  • 讯美智能网站建设泰安网络科技有限公司电话
  • 新泰建设局网站北京公司排名seo
  • 新网站上线wordpress用户登陆
  • 景安网站备案表格首页风格
  • 做网站卖菜刀需要什么手续互联网营销顾问
  • 山东鲁中公路建设有限公司网站电商网站建设任务分解结构
  • 王野苏婉卿乐清网站优化
  • 三亚市住房和城乡建设厅网站wordpress适合企业网站模板
  • php网站建设思路方案中国空间站组合体
  • 帝国+只做网站地图厦门app定制公司
  • 网站运营推广主要做什么的高匿代理ip
  • 网站建设与维护采访稿wordpress 图床加速
  • 建设国际互联网网站完整网站开发教程
  • 一个购物交易网站怎么做网站管理功能图
  • 做有后台的网站如何提交网站地图
  • 网站建设税率多少潍坊市住房和城乡建设局网站
  • 网站图片怎么做白色背景青岛公司做网站的价格
  • 网站seo工具wordpress放视频没画面
  • 自己做个网站要多少钱o2o商城网站系统开发
  • 百度网站优化哪家好长沙抖音推广代运营公司
  • 做网站的软件worddede 后门暴网站
  • 极简风格 网站上市公司seo是什么意思
  • 商城手机网站设计网架公司十大排名