摘要: 一、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 阅读(384) 评论(0) 推荐(0) 编辑
摘要: 一、基本概念 1、互斥量(mutex) 互斥量:是个类对象(可以理解为一把锁),多个线程尝试用lock()成员函数来加锁这把锁,只有一个线程能锁定成功(成功的标志是lock()函数能够返回,返回不了说明没有锁成功) 2、死锁 死锁:一般是两个或两个以上的互斥量,在两个或多个地方上锁的顺序不一致导致的 阅读全文
posted @ 2020-06-25 16:47 min_zhi 阅读(470) 评论(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 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 一、基本概念理解 并发:一个程序同时执行多个独立的任务,并发的主要目的是提高性能(同时可以做多个事情) 以前的单核CPU,某一时刻只能执行一个任务, 有操作系统调度,每秒执行多次所谓的“任务切换”,实现并发的假象。而且上下文切换需要时间开销(比如操作系统要保存你切换时的各种状态,变量或状态的存储,执 阅读全文
posted @ 2020-06-21 23:26 min_zhi 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 一、可变参函数模板 // 可变参函数模板 template <typename... T> // 表示0到多个不同的类型 void MyFun(T... args) // 表示0到多个不同类型的参数(可以同类型,也可以不同类型) { cout << sizeof...(T) << endl; cou 阅读全文
posted @ 2020-06-21 21:01 min_zhi 阅读(300) 评论(0) 推荐(0) 编辑
摘要: 一、可调用对象概念 C++中有如下几种可调用对象:函数、函数指针、lambda表达式、bind对象、函数对象。 可调用对象可以理解成具有函数特性的类型,区别于普通的变量类型 二、function 类模板 function<int(int)> // 声明一种function()类型来表示一种可调用对象 阅读全文
posted @ 2020-06-18 17:32 min_zhi 阅读(298) 评论(0) 推荐(0) 编辑
摘要: 一、函数模板 template<typename T> // typename/class 都可以,这两关键字,表示 T 是一种类型 // 如果有过个类型,则用 template<typename T1, typename T2> inline // 如果模板函数是内联函数,则inline的位置如下 阅读全文
posted @ 2020-06-16 23:52 min_zhi 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 一、类型转换运算符 转化成其他类类型 // 格式 operate type() const { // 通过类返回指定的type类型的值 } // 类型转换运算符必须要写成类的成员函数 // 例子 class Element{ explicit operate int() const; // expl 阅读全文
posted @ 2020-06-16 20:28 min_zhi 阅读(235) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2020-06-16 15:07 min_zhi 阅读(0) 评论(0) 推荐(0) 编辑
摘要: 一、概念 虚基类:无论这个类在继承体系这种出现多少次,派生类中,都只会包含唯一一个共享的虚基类的内容 棱形继承: // 棱形继承 class B1 : public A class B2 : public A class C : public B1, public B1 // 在生成C的时候会多次构 阅读全文
posted @ 2020-06-16 09:09 min_zhi 阅读(313) 评论(0) 推荐(0) 编辑