
c++
文章平均质量分 70
DZGNB
学习使我快乐
展开
-
使用gtest测试map常用功能
代码】使用gtest测试map常用功能。原创 2022-07-24 23:27:43 · 355 阅读 · 0 评论 -
使用gtest测试list常用功能
代码】使用gtest测试list常用功能。原创 2022-07-24 22:28:11 · 291 阅读 · 0 评论 -
使用gtest测试vector常用功能
代码】使用gtest测试vector常用功能。原创 2022-07-24 22:00:09 · 635 阅读 · 0 评论 -
熟悉使用gtest
gtest原创 2022-07-24 20:47:39 · 1283 阅读 · 0 评论 -
进程的虚拟地址空间
文章目录一:虚拟地址空间1.1、保留区不可访问1.2、.test 与 .rodata1.3、.data1.4、.bss1.5、.Heap1.6、内存映射段(共享库)1.7、栈空间1.8、命令行参数、环境变量1.9、内核空间二:代码示例一:虚拟地址空间进程地址空间需要隔离,防止恶意的程序修改其它程序的内存数据,因此计算机中引入虚拟地址空间。1.1、保留区不可访问128M大小,保留区即为受保护的地址,大小为0~4K,位于虚拟地址空间的最低部分,未赋予物理地址(不会与内存地址相对应,因此其不会放任何内原创 2021-06-05 14:48:20 · 667 阅读 · 0 评论 -
c++之生产者与消费者
文章目录生产者与消费者生产者与消费者#include<semaphore>#include<iostream>#include<chrono>#include<thread>#include<deque>#include<mutex>using namespace std;class Queue{public: Queue() :qu() {} ~Queue() {} void put(int val)原创 2021-03-08 09:57:16 · 196 阅读 · 0 评论 -
c++之 semaphore(信号量) 、mutex(互斥量) 、condition_variable(条件变量) 的区别
文章目录semaphore 、mutex 、condition_variable 的区别semaphore 、mutex 、condition_variable 的区别一:信号量 (semaphore) 是一种轻量的同步原件,用于制约对共享资源的并发访问。在可以使用两者时,信号量能比条件变量更有效率。二:互斥(mutex)算法避免多个线程同时访问共享资源。这会避免数据竞争,并提供线程间的同步支持。**三:条件变量(condition_variable)**是允许多个线程相互交流的同步原语。它允许一原创 2021-03-08 09:48:49 · 2942 阅读 · 0 评论 -
c++之信号量(Semaphore)
文章目录信号量(简介)成员函数acquire 与 与 release 之间的关系:信号量(简介)定义于头文件 <semaphore>信号量 (semaphore) 是一种轻量的同步原件,用于制约对共享资源的并发访问( 控制线程的并发数量) 。在可以使用两者时,信号量能比条件变量更有效率。① counting_semaphore 实现非负资源计数的信号量② binary_semaphore 仅拥有二个状态的信号量成员函数构造和赋值函数counting_semaphore const原创 2021-03-08 09:25:10 · 19581 阅读 · 9 评论 -
c++之条件变量
文章目录条件变量条件变量条件变量是允许多个线程相互交流的同步原语。它允许一定量的线程等待(可以定时)另一线程的提醒,然后再继续。条件变量始终关联到一个互斥。定义于头文件 <condition_variable>① condition_variable 提供与 std::unique_lock 关联的条件变量② condition_variable_any 提供与任何锁类型关联的条件变量③ notify_all_at_thread_exit 安排到在此线程完全结束时对 notify_a原创 2021-03-07 20:37:37 · 2642 阅读 · 0 评论 -
c++之Mutex 互斥量(互斥锁)与死锁
文章目录Mutex 互斥量(互斥锁) 简介1.Mutex 系列类(四种)①std::mutex : 该类表示普通的互斥锁, 不能递归使用。②std::recursive_mutex:该类表示递归(再入)互斥锁。递归互斥锁可以被同一个线程多次加锁,以获得对互斥锁对象的多层所有权。③ std::time_mutex: 该类表示定时(有限时间)互斥锁,不能递归使用。④ std::recursive_timed_mutex:带定时的递归互斥锁。2.Lock 类(四种)一 :lock_guard (锁保护):\二:原创 2021-03-07 20:25:22 · 2320 阅读 · 0 评论 -
c++之thread类
文章目录概述1、管理当前线程的函数(1).std::this_thread::yield();(2).std::thread::id get_id()(3).sleep_for(4). sleep_until2、管理线程的类型 thread概述C++11 引入了 thread 类,大大降低了多线程使用的复杂度,原先使用多线程只能用系统的 API,无法解决跨平台问题,代码平台的改变,对应多线程代码也必须要修改。在 C++11 中只需使用语言层面的 thread 可以解决这个问题。编写并发程序需引入头文件&原创 2021-03-07 16:48:31 · 4315 阅读 · 0 评论 -
c++之理解自旋锁
文章目录自旋锁简介c++理解自旋锁自旋锁与互斥锁总结自旋锁简介自旋锁(spinlock):是指当一个线程在获取锁的时候,如果锁已经被其它线程获取,那么该线程将循环等待,然后不断的判断锁是否能够被成功获取,直到获取到锁才会退出循环。获取锁的线程一直处于活跃状态,但是并没有执行任何有效的任务,使用这种锁会造成busy-waiting。即不断的消耗cpu它是为实现保护共享资源而提出一种锁机制。其实,自旋锁与互斥锁比较类似,它们都是为了解决对某项资源的互斥使用。无论是互斥锁,还是自旋锁,在任何时刻,最多只能原创 2021-03-02 14:44:31 · 4249 阅读 · 0 评论 -
c++之三个线程依次打印依次打印0-99,依次打印ABC
文章目录三个线程依次打印0-99三个线程依次打印ABC三个线程依次打印0-99#include<iostream>#include<thread>using namespace std;std::mutex mtx;std::condition_variable cv;int num = 1;const int n = 99;int i = 0;void print_A(){ std::unique_lock<std::mutex> lock(m原创 2021-02-27 20:05:33 · 468 阅读 · 0 评论 -
c++ 之deque
文章目录1.deque 的简介示例:2.deque的常用成员函数:示例:3.deque图解4.deque 与 vector 的区别1.deque 的简介①deque 系由一块一块的固定大小的连续空间构成(块与块之间是不连续)。一旦有必要在 deque 的前端或尾端增加新的空间,便配置一块固定大小的连续空间,串接在整个 deque 的头端或尾端。②deque 的最大任务,便是在这些分块的固定大小连续空间上,维护其整体连续的假象,并提供随机存取的接口(随机迭代器),代价则是迭代器架构较为复杂。③dequ原创 2021-02-25 22:21:34 · 2287 阅读 · 0 评论 -
c++之拷贝构造的使用与nullptr和NULL的区别
文章目录一: 拷贝构造的几种情况1、 一个类中有成员对象2、继承类的拷贝构造二:拷贝构造函数还在另二个方面使用:三:nullptr与NULL与0的区别一: 拷贝构造的几种情况1、 一个类中有成员对象例如:#include<iostream>using namespace std;class Object{private: int value;public: Object(int x = 0) :value(x){ cout << "value:" <&l原创 2021-02-20 22:23:54 · 254 阅读 · 0 评论 -
c++ vector部分知识总结
1:#include :原创 2020-11-18 13:48:10 · 308 阅读 · 0 评论 -
c++ vector源码总结
1容器内元素的插入,删除改变修改器功能void clear0清除内容iterator insert(const_ iterator p, const T& x)插入元素iterator insert(const iterator p, const size_type n, const T& x)在p前插入n个xiterator insert(const_ iterator p_ Iter_F,_ Iter _L)在p前插入来自范围[_ F,_原创 2020-11-22 15:38:20 · 449 阅读 · 0 评论 -
c++ 继承与虚函数内容总结
1、继承之间的访问关系:①:Object:可以访问自己的所有成员Base:除了可以访问自己成员外,还可以访问Object对象中的oa,ob,但不能访问valueTest:除了可以访问自己成员外,还可以访问base中的ia,ib,但不能访问ix和Obiect中的成员。②:protected在继承中当成是公有成员。但在成员对象中相当于是私有成员class Object //可以访问自己的所有成员{private: int value;protected: int oa;原创 2020-11-25 20:01:07 · 423 阅读 · 0 评论 -
c++ 多态与纯虚函数
1、多态性1.1多态性是面向对象程序设计的关键技术之。若程序设计语言不支持多态性,不能称为面向对象的语言。利用多态性技术,可以调用同一个函数名的函数,实现完全不同的功能。在C+ +中有中两种多态性:编译时的多态通过函数的重载和运算符的重载来实现的。int Max(int a, int b) { return a > b ? a : b;}char Max(char a, char b) { return a > b ? a : b;}double Max(double原创 2021-01-24 18:50:34 · 389 阅读 · 0 评论 -
auto _ptr智能指针
RAII与智能指针1、什么是RAIIRAII (Resource Acquisition Is Initialization)是由c+ +之父Bjarne Stroustrup提出的,中文翻译为资源获取即初始化,使用局部对象来管理资源的技术称为资源获取即初始化;这里的资源主要是指操作系统中有限的东西如内存、网络套接字,互斥量,文件句柄等等,局部对象是指存储在栈的对象,它的生命周期是由操作系统来管理的,无需人工介2、RAII的原理资源的使用一般经历三个步骤:a. 获取资源(创建对象)b.使用资源原创 2021-01-24 18:52:33 · 228 阅读 · 0 评论 -
unique_ptr智能指针
unique_ptr智能指针:①unique_ptr (唯一)是一种定义在<memory>中的智能指针(smart pointer)。②unique_ptr 对象不能进行复制操作只能进行移动操作。unique_ptr没有copy 构造函数,不支持普通的拷贝和赋值操作。③unique是独特的、唯一的意思,故名思议,unique_ptr可以"独占"地拥有它所指向的对象。unique_ptr和shared_ptr类型指针有很大的不同: shared_ptr允许多个指针指向同一对象,而 uni原创 2021-01-24 18:54:02 · 247 阅读 · 0 评论 -
share_ptr: 智能指针
1、多态性1.1多态性是面向对象程序设计的关键技术之。若程序设计语言不支持多态性,不能称为面向对象的语言。利用多态性技术,可以调用同一个函数名的函数,实现完全不同的功能。在C+ +中有中两种多态性:编译时的多态通过函数的重载和运算符的重载来实现的。int Max(int a, int b) { return a > b ? a : b;}char Max(char a, char b) { return a > b ? a : b;}double Max(double原创 2021-01-27 16:54:55 · 724 阅读 · 0 评论 -
C11中的右值引用
右值引用1.什么是左值和右值: 左值是指表达式结束后依然存在的持久对象,右值是指表达式结束时就不再存在的临时对象。2.区分左值与右值的便捷方法是:看能不能对表达式取地址,如果能,则为左值,否则为右值。所有的具名变量或对象都是左值,而右值不具名。(舍弃 C 语言中的左值和右值概念)3.在 C++11 中,右值由两个概念构成:一个是纯右值(prvalue, PureRvalue) , 比如,非引用返回的临时变量、运算表达式产生的临时变量、原始字面量和 lambda 表达式等都是纯右值。另一个则是将亡值原创 2021-01-27 17:50:57 · 393 阅读 · 0 评论