[toc]
- 资源分配的最小单位
- 进程拥有独立的地址空间
- 进程间通信通过信号量,信号、共享内存、消息传递、管道、队列 ==会经常考这个问题==
- 进程由操作系统调度
- 多进程方式比多线程稳定
- 程序执行的最小单元。CPU调度的基本单位
- 线程来自于进程,一个进程下可以产生多个线程
- 每个线程都有自己一个栈,不共享栈,但多个线程能共享同一个属于进程的堆
- 线程共享内存
- 线程消耗低于进程
- 某个线程产生致命错误会导致进程奔溃
- 线程间读写变量存在锁的问题处理起来相对麻烦
- 协程的控制由应用程序显式调度,非抢占式的
- 协程的执行最终靠的还是线程,应用程序来调度协程选择合适的线程来获取执行权
- 切换非常快,成本低。一般占用栈大小远小于线程(协程KB级别,线程MB级别),所以可以开更多的协程 协程比进程更轻量级
栈 是由操作系统来分配的。存放函数的参数,局部变量。其操作方式类似于数据结构中的栈。
堆,一般是由程序员分配,若程序员不分配,可能由OS收回。