进程与线程
-
进程
- 一个程序的运行实例,是资源分配的最小单位
- 好比一个工厂,有单独的专属自己的资源
- 不同进程之间是隔离的
- 进程切换代价较大,需要保存和恢复上下文
- 进程通信代价较大,需要引入进程间通信
- 多进程
- 操作系统允许多个进程互不干扰地运行并提供服务,比如挂着下载的同时,还能听歌,还能敲代码
- 查看Linux进程
- BSD风格命令
ps aux - Unix风格命令
ps -ef
- BSD风格命令
- 创建进程
#include <unistd.h> pid_t fork(void);- 作用——创建“调用此函数的进程(我们称为父进程)”的副本
- 调用后的程序流,需要根据返回值进行区分
- 若大于0,即子进程ID,后面可以执行父进程的代码
- 若等于0,后面执行子进程的代码
- 一个程序的运行实例,是资源分配的最小单位
-
线程
- 一个进程中单独开启的一段要执行的代码,是CPU调度的最小单位
- 好比工厂里的工人,多个工人在同一个工厂中协作劳动,共享资源
- 不同线程之间共享进程的数据
- 无需切换上下文
- 可通过共享内存通信,但要用锁机制处理并发场景
- 多线程
- 一个程序内可以同时运行多个并行的执行流,完成各自的任务