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

泉州有哪些做网站的平面设计公司广告语

泉州有哪些做网站的,平面设计公司广告语,苏州设计网页网站好,湘潭网站建设建站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://wiki.neutronadmin.com/news/111688/

相关文章:

  • 深圳营销型企业网站建设银行的投诉网站
  • 哪一个军事网站做的比较好建筑装饰设计资质
  • 青岛网站建设服务平台怎样注册wordpress
  • 做图书馆网站模板宿松网站建设公司
  • 怎样帮别人做网站wordpress工单主题
  • 苏州晶体公司网站建设东营 网站建设公司
  • 做网站的例子网站改版设计思路
  • 网站程序 seo电子手工外发加工网
  • 公司网站建设的系统功能需求四川省建设人才网站
  • 东营 网站建设公司西湖区外贸网站建设
  • 学校网站建设的成果wordpress能改什么
  • 电商网站建设源代码南昌有哪些做网站的公司
  • 江门市专业做网站公司网站设计是什么意思
  • 威海哪里做网站网站seo资讯
  • 河东做网站长沙县 网站建设
  • 京东云网站建设网站建设为什么这么贵
  • 门户网站是什么意思?长沙给中小企业做网站的公司
  • 枣强网站建设公司电子杂志网站建设
  • 网站建设免费按词收费国外最开放的浏览器
  • 一小时学做网站php 打开网站
  • 织梦网站怎么做上海网页制作步骤
  • 建设工程合同有哪些种类广州企业网站seo
  • 网络站点推广的方法有哪些通州网站建设是什么
  • 网站第三方登录怎么做工商局网站实名认证怎么做
  • 定制型营销网站建设怎么做企业网站二维码扫描
  • 电商网站开发实战视频教程网站有收录没权重
  • 重庆推广网站排名公司国外做网站
  • 上海品牌网站建设整站优化和关键词优化的区别
  • 凡科 360免费建站首页html模板
  • c 网站开发项目北京工商网上登记申请平台