进程和线程的联系与区别

一、进程和线程的联系

操作系统中可以有很多进程,每个进程都有自己独立的资源;一个进程中可以有很多线程,系统中的每个线程都能独立调度,同一个进程中的各个线程共享内存/硬盘资源。进程是资源分配的基本单位,线程是调度执行的基本单位。

每个线程都是单独调度的,在调度过程中系统就不再考虑进程这样的概念了

线程特点:
①每个线程都可以独立地去CPU上调度执行
②同一个进程里的多个线程之间共用同一份内存空间和文件资源(导致这时创建线程的时候就不需要重新申请资源了,直接复用之前分配给进程的资源即可,省去了申请资源的开销,因为系统申请资源时会在内存中有一个遍历的过程,于是与创建进程相比创建线程的效率就更高了。刚开始创建第一个线程的时候相当于是和进程一起创建的,还是需要有一定的开销去申请资源(这个申请资源的开销记在进程上),后面再创建线程开销就省下了)
③线程能提高效率,能实现并发编程,同时开销更小
④增加线程的数目,能进一步提高效率
⑤线程不能无限制地增加,线程数量达到一定程度时,再进一步增加线程的数目,效率无法进一步提升,反而会因为要调度的线程太多使调度的开销过大,反而会降低程序的执行效率
⑥线程数目多了之后,容易产生冲突,称为“线程安全问题”(两个线程同时去访问同一个变量,比如平台只有一张票,A在平台上买票,此时平台还没来得及更新数据库的数据,B发现平台上还有票就再次买了票,然后平台更新数据库的数据,这导致一张票被卖了两次,这里A和B是同时买票)
⑦如果某个线程出现异常,如果没有妥善处理(比如用catch捕获),就容易导致整个进程都出现问题(崩溃),此时其它线程也随之消亡

多进程可以实现并发编程的效果,但是多进程编程模型有明显的缺点是进程太重量、效率不高(消耗较多时间在申请进程的资源上,因为系统申请进程资源时在内存中有一个遍历的过程),为了解决这个问题,引入“线程”(Thread),线程也叫“轻量级进程”,创建线程比创建进程更快,销毁线程比销毁进程更快,调度线程比调度进程更快。多线程也可以实现并发编程的效果。

二、进程和线程的区别

①进程包含线程,一个进程里面可以有一个线程也可以有多个线程
②进程和线程都是用来解决并发编程的问题的,但是线程比进程更轻量、高效
③线程比进程更轻量、高效的原因在于同一个进程里的线程之间共用同一份进程的内存和硬盘资源,创建线程时直接复用之前分配给进程的资源即可,省区了申请资源的开销(在代码上,进程之间通信需要借助一个公共空间来完成数据的交互,而线程之间因为共用同一份内存和硬盘资源所以可以直接访问对方的变量即可完成线程之间的数据交互)
④进程和进程之间是具有独立性的,一个进程挂了不会影响其它进程。同一个进程内的线程和线程之间是可能会相互影响的(比如“线程安全问题”和“线程出现异常问题”)
⑤进程是资源分配的基本单位,线程是调度执行的基本单位

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值