当前位置: 首页 > 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://www.yutouwan.com/news/111688/

相关文章:

  • 做英文网站怎样网站建设
  • 吉林省级建设行政主管部门政务网站烟台网站制作企业
  • wordpress删除角色名seo网站推广的作用
  • 南昌加盟网站建设现代简约室内设计说明200字
  • 红酒网站建设方案范本网站首页制作采用
  • 网站设计的公司选哪家淘宝推广网站怎么做
  • 建站宝盒模板wordpress微信接口
  • 网站维护托管企业网站建设公司郑州
  • 西安网站开发哪家好生鲜超市店面设计
  • 如何做网站监控安徽做网站哪家好
  • 潜山网站建设南充手机网站建设
  • 网站宣传推广策划联通物联网服务运营平台
  • 淘宝不允许 网站建设简单网站建设教学视频
  • 做小说网站做国外域名还是国内的好做视频网站的空间
  • 网站建设公司转型搜索 龙岩网
  • 自动优化网站软件没有了门户网站等保二级建设方案
  • 启迪网站建设招聘深圳网络推广公司哪家好
  • 河北提供网站制作公司电话北京做网站的公司
  • 如何实现输入域名访问网站首页傻瓜网站开发软件
  • 网站开发软件 连接SQL数据库WordPress换主机教程
  • 做视频直播网站需要多少资金怎样做酒店网站ppt模板
  • 企业网站seo贵不贵网站海外推广方案
  • 泰安人才网最新招聘网温州网站优化案例
  • 法制建设网站失业保险网站
  • 韩国私人网站服务器南阳手机网站推广
  • 中山有网站建设公司吗wordpress5.2自动保存
  • 柳州做网站优化如何创办公司
  • 免费物业网站模板域名解析错误是什么原因
  • seo对企业网站运营有何意义域名备案服务
  • 免费网站软件下载安装html怎么学