C++笔记
Air_lml
这个作者很懒,什么都没留下…
展开
-
进程,线程,协程讲解
一:操作系统的内存模型 程序运行先从内存中读取数据进入高速缓存区(当内存不够时,可能要先进行内存交换,先从磁盘中读取数据加入内存),进行运算,运算完,存入主存中。 此处涉及到一个性能调优的知识点,进程绑核技术,也就是常说的多核编程,当一个进程绑定cpu时,该进程就会一直在该cpu上跑,就不会涉及CPU切换,还有一点是CPU分为L1,L2,L3,三级缓存,也就是上面说的高速缓存区,L1,L2是每个核心独享的,L3才是各个CPU共享的,这样程序在访问高速缓存区时,同一个CPU就能减少cache miss原创 2020-12-11 01:01:05 · 157 阅读 · 0 评论 -
同步与异步,阻塞与非阻塞两组概念的区别
同步与异步针对的两个组件 同步:一个任务完成后才能执行下一个任务 异步:提交任务马上返回,不等执行结果,返回的是提交结果,例外一个任务也可以马上提交 阻塞与非阻塞针对的是函数的接口的状态 阻塞:一个函数的调用阻塞是指要等待函数执行完,返回结果 非阻塞:仅仅调用函数,不用等待函数执行完成后返回 由上面可以看出阻塞与非阻塞是指一种函数的调用状态,同步与异步是组件直接的概念 ...原创 2020-12-09 22:47:17 · 100 阅读 · 0 评论 -
代码如何变成可执行文件
hello.c #include <stdio.h> int main() { printf("Hello World\n"); return 0; } gcc hello.c 将会生成a.out 在hello.c到a.out这个过程到底是经历了哪几个阶段,gcc帮我们做了什么,a.out是怎么生成 hello.c ->a.out主要经历了四个阶段:预处理,编译,汇编,链接 一:预处理 预处理主要是处理源代码中以#开始的预编译指令...原创 2020-06-03 22:31:18 · 2654 阅读 · 0 评论 -
线程同步中方式对比
在多线程程序中,往往会遇到线程中资源同步问题,同步问题可以划分为两类,一类为共享一个资源,一类为给每个线程分配一个资源 一:给每个线程分配一个资源 1:定义线程变量,在变量名前面加上_thread,该变量就会申明为线程变量 但是同时C++中对__thread变量的使用有额外的限制: 1. 在C++中,如果要在定义一个thread-local变量的时候做初始化,初始化的值必须是一个常量表达式。 2. __thread只能修饰POD类型,即不带自定义的构造、拷贝、赋值、析构的类型,不能...原创 2020-05-31 17:25:12 · 244 阅读 · 0 评论 -
C++类型转换
C++类型转换 类型转换分为两种,一种为显示转换,一种为隐式转换 编译器自动帮我们转换的为隐式转换 ps:隐式转换,编译器将double转换为Int double b = 3.123 int a = b 编译器自动将double类型的b:3.123转换为Int a:3 ps:显示转换,手动将double转换为Int double b = 3.123 int a = (in原创 2016-12-03 11:51:22 · 161 阅读 · 0 评论 -
C++类构造以及赋值
有很多同学搞不清类的构造顺序,到底是基类先构造还是子类先构造,什么左值,什么是右值,构造函数为什么不能是虚基类,虚构函数为什么的是虚基类,且听AIR老师为你们徐徐道来 第一个基类与派生类的构造顺序 class TestA { public: TestA(){ printf("construction TestA\n"); } ~TestA(){ printf("destroy Test原创 2020-12-07 23:13:26 · 290 阅读 · 0 评论