进程、线程

什么是进程?

  • 进程是资源分配的基本单位
  • 有自己独立的虚拟地址空间,在系统上运行的东西,都可以称为进程, 占用系统的资源 如cpu、物理内存。

什么是程序?

  • 程序是进程指令的集合,可以启用一个进程或者多个进程,占用磁盘空间,不占用系统资源。

什么是线程?

  • 在Linux上线程是特殊的进程,是轻量级的进程
  • 线程是资源调度的基本单位
  • 每个线程都有独立的程序计数器,线程栈和一组线程寄存器,内核调度的是线程。
  • 线程是进程的子集,一个进程里可以有很多的线程,每条线程可以并行执行不同的任务。在同一进程内的所有线程共享同一片内存空间,但每个线程都有自己的独有栈内存 来存储自己的栈信息,在多个cpu下可以允许多个线程同时并行执行。

进程和线程的区别:

  • 独立的虚拟地址空间、其他的资源:进程间是相互独立的,同一个进程的多个线程可以共享这些资源。
  • 调度和切换:线程的上下文切换比进程的上下文切换快很多,线程的创建也比进程快很多,但是进程的管理波线程的管理方便、容易。
  • 通信:进程间通信 通过 管道、信号量、共享内存、消息队列 、socket    线程间的通信可以通过读写数据变量来进行通信,需要保持数据的安全性,通过互斥锁和条件变量来实现。

根据不同的场景使用进程还是线程:

  • 需要频繁的创建销毁的优先考虑线程(线程池),线程的创建和销毁的比进程的代价小的多
  • 需要提高并发,优先使用线程,并行操作,多个cpu下允许多个线程并行执行
  • 线程的切换速度比进程快
  • 需要考虑程序的健壮性,优先使用进程,一个线程崩了,对应的进程就会挂掉,Nginx里使用的是多进程。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值