操作系统的基本单位
直接申请独立的内存
操作系统管理资源和任务的基本单位
如果通过网络,每个进程会占据一个端口,可以理解成一个软件,进程有独立的内存空间
把操作系统理解成一个小区,那么进程就相当于一户户人家
依赖于进程
线程是最小量级的进程(是进程的子元素)
轻量级的进程
轻量级的线程
协程是一种用户态的轻量级线程,协程的调度完全由用户控制。
协程不是进程或线程,其执行过程更类似于子例程,或者说不带返回值的函数调用。
1. 依赖于进程,一个进程可以有多个线程,也可以有多个线程
2. 都可以处理高并发,但是进程是向操作系统直接去申请的,重量级的,所以释放和创建,效率低
而线程是依赖于进程的,不需要向操作系统申请,cpu调度执行,速度较快。一般情况下优先选择线程进行高并发编程
3. 进程具有独立性,每个进程有自己的虚拟地址空间,一个进程挂了不会影响其他进程。如qq挂了,不会影响微信(两个独立进程)
一个线程挂了,可能影响其他进程,甚至导致整个进程崩溃
因此对安全稳定性要求较高时,需要优先选择进程进行高并发编程。
4. 进程 资源消耗大,效率较低,但是比较稳定
线程资源消耗小,效率较高,但是稳定性较差
1. 一个线程可以多个协程,一个进程也可以单独拥有多个协程
2. 线程进程都是同步机制,而协程则是异步机制
3. 多个线程相对独立,有自己的上下文,切换受系统控制;而协程也相对独立,有自己的上下文,但是其切换由自己控制,由当前协程切换到其他协程由当前协程来控制。
4. 协程是用户态的轻量级线程,不受内核调度;线程是任务调度和系统执行的最小单位,需要内核调度。