进程、线程、携程

  • 进程是资源分配的基本单位,线程是调度的基本单位,是它的一部分、进程的一个执行单位。是轻量级的进程, 在 Linux 环境下线程的本质仍是进程。
  • 线程除了栈,其它都共享进程的,它没有自己独立的内核资源、共享进程的代码段、数据段、堆、环境变量表、命令行参数、文件描述符、信号处理方式、当前工作目标、用户ID、组ID等资源,
  • 线程运行的本质就是函数运行,函数运行时信息是保存在栈帧中的,因此每个线程都有自己独立的、私有的栈区。
  • 进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;同一个进程下的线程之间共享 共享本进程的地址空间和资源(线程上下文):所属线程的栈区、程序计数器、栈指针以及函数运行使用的寄存器。切换到额开销小。
  • 进程崩溃不会影响其他进程,进程之间完全隔离;线程崩溃,操作系统检测到会异常,kill掉进程,其他线程也被干掉。

协程:

比线程更加轻量级。一个线程也可以拥有多个协程,不被操作系统内核管理,而完全是由程序所控制(在用户态中执行)相当于用户态的轻量级线程,性能得到了很大的提升。协程的暂停完全由程序控制,线程的阻塞状态是由操作系统内核来进行切换。协程拥有自己的寄存器上下文和栈,协程调度切换时,将寄存器上下文和栈保存到其它地方,在切回来的时候,恢复先前保存的寄存器上下文和栈,直接操作栈基本没有内核切换的开销。因此,协程的开销远远小于线程的开销。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值