摘要:一、future 扩展 1、future 的其他成员函数 class MyClass { public: int MyThread(int param); // 假定一个线程函数是有返回值的 }; int main() { MyClass ele; std::future<int> result = 阅读全文
posted @ 2020-06-27 15:51 min_zhi 阅读(108) 评论(0) 推荐(0) 编辑
摘要:一、std::async函数模板、std::future类模板 #include <future> std::async 是个函数模板,返回一个 std::future 对象(类模板) 作用是启动一个异步任务,就是自动创建一个线程并开始执行对应的线程入口函数 可以通过future 的get() 函数 阅读全文
posted @ 2020-06-26 18:40 min_zhi 阅读(74) 评论(0) 推荐(0) 编辑
摘要:一、成员函数 wait()、 notify_one() 和 notify_all() 以及 虚假唤醒 的概念 notify_one():任意唤醒一个线程中condition_variable的waitnotify_all():唤醒所有线程中condition_variable的wait 当 m_me 阅读全文
posted @ 2020-06-26 13:40 min_zhi 阅读(113) 评论(0) 推荐(0) 编辑
摘要:一、单例设计模式共享数据例子 std::mutex myTutex; class UniqueElement { public: static UniqueElement* GetInstance() { if (m_instacne == nullptr) // 双重检测,提高程序运行效率 { s 阅读全文
posted @ 2020-06-26 13:38 min_zhi 阅读(106) 评论(0) 推荐(0) 编辑
摘要:一、unique_lock 的第二个参数 (1)std::adopt_lockunique_lock对象在构造的时候,不执行mutex::lock()所以必须要把互斥量提前 lock(),该参数与 lock_guard 使用相同 m_mutex1.lock(); // 使用adopt_lock 之前 阅读全文
posted @ 2020-06-25 18:08 min_zhi 阅读(248) 评论(0) 推荐(0) 编辑
摘要:一、基本概念 1、互斥量(mutex) 互斥量:是个类对象(可以理解为一把锁),多个线程尝试用lock()成员函数来加锁这把锁,只有一个线程能锁定成功(成功的标志是lock()函数能够返回,返回不了说明没有锁成功) 2、死锁 死锁:一般是两个或两个以上的互斥量,在两个或多个地方上锁的顺序不一致导致的 阅读全文
posted @ 2020-06-25 16:47 min_zhi 阅读(197) 评论(0) 推荐(0) 编辑
摘要:一、创建线程 1、通过函数来初始化线程 void MyPrint() { cout << "自定义线程" << endl; cout << "自定义线程结束" << endl; } int main() { std::thread mythread(MyPrint); // (1)thread是一个 阅读全文
posted @ 2020-06-22 23:18 min_zhi 阅读(100) 评论(0) 推荐(0) 编辑
摘要:一、基本概念理解 并发:一个程序同时执行多个独立的任务,并发的主要目的是提高性能(同时可以做多个事情) 以前的单核CPU,某一时刻只能执行一个任务, 有操作系统调度,每秒执行多次所谓的“任务切换”,实现并发的假象。而且上下文切换需要时间开销(比如操作系统要保存你切换时的各种状态,变量或状态的存储,执 阅读全文
posted @ 2020-06-21 23:26 min_zhi 阅读(31) 评论(0) 推荐(0) 编辑
摘要:一、可变参函数模板 // 可变参函数模板 template <typename... T> // 表示0到多个不同的类型 void MyFun(T... args) // 表示0到多个不同类型的参数(可以同类型,也可以不同类型) { cout << sizeof...(T) << endl; cou 阅读全文
posted @ 2020-06-21 21:01 min_zhi 阅读(105) 评论(0) 推荐(0) 编辑
摘要:一、可调用对象概念 C++中有如下几种可调用对象:函数、函数指针、lambda表达式、bind对象、函数对象。 可调用对象可以理解成具有函数特性的类型,区别于普通的变量类型 二、function 类模板 function<int(int)> // 声明一种function()类型来表示一种可调用对象 阅读全文
posted @ 2020-06-18 17:32 min_zhi 阅读(77) 评论(0) 推荐(0) 编辑