一、进程和线程的概念和区别
1、进程是系统进行资源调度的基本单位
2、线程是系统进行运算调度(处理器分配{CPU、内存})的基本单位
二、进程间的通信
进程间的通信共有5种:
1、管道
通常指无名管道
它可以看成是一种特殊的文件,对于它的读写也可以使用普通的read、write 等函数。但是它不是普通的文件,并不属于其他任何文件系统,并且只存在于内存中。
2、FIFO
也称为命名管道,它是一种文件类型
FIFO可以在无关的进程之间交换数据,与无名管道不同
3、消息队列
是消息的链接表,存放在内核中
消息队列是面向记录的,其中的消息具有特定的格式以及特定的优先级。
4、信号量
是一个计数器。信号量用于实现进程间的互斥与同步,而不是用于存储进程间通信数据
信号量用于进程间同步,若要在进程间传递数据需要结合共享内存
基于操作系统的 PV 操作,程序对信号量的操作都是原子操作
5、共享内存
指两个或多个进程共享一个给定的存储区
共享内存是最快的一种 IPC,因为进程是直接对内存进行存取
因为多个进程可以同时操作,所以需要进行同步
三、引用和指针的区别
指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作(申明一个引用的时候,切记要对其进行初始化)
引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作
四、.h头文件中的ifndef/define/endif 的作用?
防止头文件里的声明有冲突。
五、#include<file.h> 与#include "file.h"的区别?
前者是从Standard Library的路径寻找和引用file.h,而后者是从当前工作路径搜寻并引用file.h
六、智能指针:Effective C++ 建议我们将对象放到智能指针里,可以有效的避免内存泄露。
四种智能指针:
STL一共给我们提供了四种智能指针:auto_ptr、unique_ptr、shared_ptr和weak_ptr
未完待续。。。。。
参考链接: