进程是资源管理的基本单位,线程共享进程的资源
线程是cpu调度的基本单位,进程通过线程实现cpu调度
进程有自己单独的地址空间,线程共享进程的地址空间。
进程上下文切换成本高,CPU利用率低,线程上下文切换成本低,CPU利用率高
进程间通信成本高,需要通过IPC完成,数据分开,数据同步简单
进程间通信容易,共享进程内存地址,数据共享简单,但需要维护数据同步
进程间隔离,一个进程异常退出不影响其他进程,线程共享地址空间,一个线程异常退出会导致整个程序退出
协程coroutine,是线程上的分片,在线程上下文中不断切换协程自己的寄存器、栈上下文实现不同逻辑流的执行,适合I/O等待比较多的场景,当某个协程进入I/O等待时立即切换到另外一个协程执行,充分利用线程的CPU时间,不做线程级、进程级高成本上下文切换。