c++
xizhehaitang
这个作者很懒,什么都没留下…
展开
-
(八)单例设计模式共享数据分析, call_once
单例模式:整个项目中只能有一个单例类对象,不能创建多个;简单实现的例子://单例类class MySingleClass {private: MySingleClass() {};//私有化构造函数 这样就不能创建多个对象了private: static MySingleClass* m_instance;public: static MySingleClass* GetInstance() { if (m_instance == NULL) { m_instance原创 2022-02-23 15:52:39 · 233 阅读 · 0 评论 -
(七)unique_lock详解
1. unique_lock 可以和lock_guard 一样自动解锁,不需要再自己解锁。2. unique_lock更灵活可以解决一些锁拿住不放的阻塞问题;unique_lock<std::mutex> sb_un(my_mutex1, try_to_lock);sb_un.owns_lock();//返回true表示拿到锁可以解决阻塞什么都不干的事情,这种机制可以在拿不到锁的时候干点别的事情成员:try_to_lockdefer_lockadopt_lock原创 2022-02-23 15:04:08 · 1741 阅读 · 0 评论 -
(六)互斥量(mutex)
互斥量时一个类对象,形象的理解时一把锁,多个线程尝试用lock()成员函数加锁,只有一个线程可以锁成功,如果没有锁成功会不断的尝试去获取锁。互斥量使用的时候要小心,多了影响效率,少了起不到全面的保护效果。方法:调用lock unlock 必须成对出现#include <thread>#include <iostream>#include <vector>#include <list>#include <Windows.h>#原创 2022-02-23 10:22:27 · 502 阅读 · 0 评论 -
(五)创建和等待多个线程、数据共享问题分析(有读有写)
1、创建和等待多个线程#include <thread>#include <iostream>#include <vector>#include <Windows.h>using namespace std;void myprint(const int & i) { cout << "hello myprint in mythread start i is: " << i << endl; //原创 2022-02-23 09:35:22 · 506 阅读 · 0 评论 -
(四)成员函数做线程函数的使用方法,线程传参详解 detach()大坑
1、用类做可调用对象创建线程注意:需要定义operater()操作符成员函数 使这个类成为一个可以调用的对象。2、成员函数做线程函数3、detach大坑使用detach时不要传递指针变量,容易出现主线程释放了指针,子线程还在访问导致内存泄漏的问题。如果thread执行的函数的参数是类的对象,那么需要显示的强制类型转换,避免隐式转换,才能确保使用detach时,会在主线程中先构造完成,把子线程交给后台。使用案例可以参看教程:(28条消息) C++ 多线程detach原创 2022-02-22 17:38:52 · 402 阅读 · 0 评论 -
(三)线程的启动 结束 创建的方法
1、头文件C++11 多线程相关的头文件 C++11 新标准中引入了四个头文件来支持多线程编程,他们分别是<atomic> ,<thread>,<mutex>,<condition_variable>和<future>注意C中多线程的头文件是pthread #include<pthread.h>2、代码实例演示启动 结束创建的方法#include <thread>#include <iostrea.原创 2022-02-22 16:13:42 · 104 阅读 · 0 评论