进程
进程是资源分配的基本单位,拥有独立的内存空间,(如打开文件,堆,静态区,代码段等),就是运行起来的可执行程序,
线程
线程是资源调度的基本单位,也是程序执行的基本单位,共享同一进程的地址空间和大部分资源,独自拥有栈空间,每个进程中有且只有一个主线程,主线程和进程是相互依赖的关系,多提一句:协程是用户态的轻量级线程,线程内部调度的基本单位
进程和线程的区别
1、因为不用重新开辟地址空间,所以线程启动速度快,轻量级
2、线程的系统开销小
3、因为线程共享相同的地址空间和大部分资源,所以安全性不如进程,但是相比之下其通信更为简单,因为资源共享,同时导致线程使用有一定难度,需要处理数据一致性问题
4、进程间通信:管道、消息队列、信号量、共享内存、套接字等,借助操作系统,线程间通信:全局变量、互斥量、条件变量、信号量,线程间可以直接读写进程数据段(如全局变量)来进行通信
4、同一线程共享的有堆、全局变量、静态变量、指针,引用、文件等,而独自占有栈
5、上下文切换成本低,线程不需要切换地址空间和大部分系统资源,只需保存和恢复线程的寄存器状态和栈指针