摘要: Windows临界区 Windows临界区,同一个线程是可以重复进入的,但是进入的次数与离开的次数必须相等。C++互斥量则不允许同一个线程重复加锁。windows临界区是在windows编程中的内容,了解一下即可,效果几乎可以等同于c++11的mutex。包含#include <windows.h> 阅读全文
posted @ 2020-07-06 13:43 Chen沉尘 阅读(3967) 评论(0) 推荐(0) 编辑
摘要: 面向的问题 对简单临界资源的访问,如果使用mutex开销较大。 如有两个线程,对一个变量进行操作,一个线程读这个变量的值,一个线程往这个变量中写值。即使是一个简单变量的读取和写入操作,如果不加锁,也有可能会导致读写值混乱(一条语句可能会被拆成3、4条汇编语句来执行,所以仍然有可能混乱) 1 #inc 阅读全文
posted @ 2020-07-06 12:42 Chen沉尘 阅读(1623) 评论(0) 推荐(1) 编辑
摘要: 如图以下是头文件<future>中的类容。 std::future<T> future有两个类模板,一个独占的std::future,也就是只能被获取一次,另一个是共享的std::shared_future。std::future<T>是一个类模板,其中T是要存储的值的类型,std::future 阅读全文
posted @ 2020-07-06 09:51 Chen沉尘 阅读(1388) 评论(0) 推荐(0) 编辑
摘要: 面向的问题 当一个线程等待另一个线程完成任务时,它会有很多选择。 第一,它可以持续的检查共享数据标志(用于做保护工作的互斥量),直到另一线程完成工作时对这个标志进行重设。不过,就是一种浪费:线程消耗宝贵的执行时间持续的检查对应标志,并且当互斥量被等待线程上锁后,其他线程就没有办法获取锁,这样线程就会 阅读全文
posted @ 2020-07-04 21:04 Chen沉尘 阅读(775) 评论(0) 推荐(0) 编辑
摘要: std::move和std::forward是C++11中新增的标准库函数,分别用于实现移动语义和完美转发。 下面让我们分析一下这两个函数在gcc4.6中的具体实现。 预备知识 引用折叠规则 T& + & => T&T&& + & => T&T& + && => T&T&& + && => T&& 阅读全文
posted @ 2020-07-04 17:37 Chen沉尘 阅读(853) 评论(0) 推荐(0) 编辑
摘要: 转自dancingrain判断链表中是否有环 有关单链表中环的问题 首先,关于单链表中的环,一般涉及到一下问题: 1.给一个单链表,判断其中是否有环的存在; 2.如果存在环,找出环的入口点; 3.如果存在环,求出环上节点的个数; 4.如果存在环,求出链表的长度; 5.如果存在环,求出环上距离任意一个 阅读全文
posted @ 2020-06-28 10:17 Chen沉尘 阅读(1126) 评论(0) 推荐(0) 编辑
摘要: 对比 相同点:都是防止头文件重复包含 区别: 原理不一样,#pragma once如果发现头文件被包含就不会打开头文件,而后者每次都要打开头文件去判断头文件宏,所以前者更快; 缺陷: 当#pragma once用在两个内容相同,文件名不同的头文件中时,这2个头文件都会包含进来,编译时就会出现重定义的 阅读全文
posted @ 2020-06-27 20:36 Chen沉尘 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 转自The Charm Of Craftsmanship C++ 面向对象的三大特性和五个原则 三大特性 封装:就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代 阅读全文
posted @ 2020-06-27 20:21 Chen沉尘 阅读(1562) 评论(0) 推荐(0) 编辑
摘要: 转自xd_xumaomao const(常量)和#define(宏定义)区别 对比 编译器处理不同 宏定义是一个“编译时”概念,在预处理阶段展开(在编译时把所有用到宏定义值的地方用宏定义常量替换),不能对宏定义进行调试,生命周期结束于编译时期;const常量是一个“运行时”概念,在程序运行使用,类似 阅读全文
posted @ 2020-06-27 18:08 Chen沉尘 阅读(600) 评论(0) 推荐(0) 编辑
摘要: STL概况 面试题 STL常用的容器有哪些以及各自的特点是什么? 1.vector:底层数据结构为数组 ,支持快速随机访问。 2.list:底层数据结构为双向链表,支持快速增删。 3.deque:底层数据结构为一个中央控制器和多个缓冲区,支持首尾(中间不能)快速增删,也支持随机访问。 4.stack 阅读全文
posted @ 2020-06-27 17:34 Chen沉尘 阅读(290) 评论(0) 推荐(0) 编辑