进程 | 线程 | |
---|---|---|
定义 | 一个程序调用过程的实例 | 一个程序调用过程的子集 |
进程 | 从父进程拷贝完整的数据段 | 可以直接访问其所在进程的数据段 |
通信 | 必须使用进程间通信 | 可以直接与进程中的其它线程通信 |
开销 | 占用相当大的开销 | 几乎无开销 |
创建 | 新进程必须其父进程的副本 | 线程很容易创建 |
控制 | 只能对其子进程实施控制 | 可以被同进程的其它线程控制 |
改变 | 任何父进程的改变不会影响子进程 | 任何主线程的改变可能影响同进程的其它线程 |
存储器 | 运行于单独的存储空间 | 运行于共享的存储空间 |
文件描述符 | 大部分文件描述符不共享 | 共享文件描述符 |
文件系统 | 文件系统上下文中不共享 | 共享文件系统上下文 |
信号 | 不共享信号处理 | 共享信号处理 |
受控于 | 操作系统 | 程序员 |
依赖性 | 进程间是独立的 | 线程间相互依赖 |
参考文献:
[1] Process Vs Thread - LeetCode / Interview Questions / Operating System
[2] 线程 - 维基百科
[3] 进程 - 维基百科
[4] 进程间通信 - 维基百科
[5] 消息队列 - 维基百科