进程和线程的区别

目录

前言

一、线程是什么?

二、进程是什么?

三、什么是多进程和多线程?

            1.多进程

            2.多线程

四、进程和线程的关系

总结


前言

        随着学习的深入,基本语法不可能完美地解决所有问题。在大部分情况中,需要引入线程和进程的概念。然而线程和进程才是步入C/C++初级的第一步。


一、线程是什么?

        根据百度百科的定义:线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。

        这段话无非告诉我们线程和进程的一种关系——线程是进程的一部分,一个进程可以包含多个线程。

二、进程是什么?

        在了解了线程是进程的一部分之后,我们则需要弄明白什么是进程。

        根据百度百科定义:进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。

        花了百来字去介绍进程,其实进程也是一句话就可以概括的。进程就是一个程序的实体,是线程的容器。

三、什么是多进程和多线程?

1.多进程

        随着CPU的发展,CPU睿频的以及核心数量不断的增加。目前Intel甚至有5.2GHz的芯片,这个概念相当于CPU一秒钟内可以进行约16500000次的加法运算!如此之高的运算速度,如果只运行一个进程(程序)或者十个进程都是远远无法让CPU跑满的,CPU总是以极快的速度工作,然后休息,休息的时间比工作还长。这就涉及到资源利用问题,因此,我们通常会在操作系统中运行多个进程,合理的分配CPU资源,这就是多进程。

        那么多进程又是怎么实现的呢?原来,由于CPU工作特别快,快到人眼根本不可能看出来,所以CPU是根据任务队列,将时间片平均分配给各个程序,当然,如果遇到需要更高优先级的任务则会优先处理(每个处理器的处理任务方式不同,在此仅列举最常见情况)。通过上述任务处理方式,则可以达到一秒钟处理多个进程的效果。

2.多线程

        在一个程序中,基于资源的合理分配以及任务需要,通常会在一个进程当中创建多个线程。多个线程分别完成不同的子任务,以达到进程任务完美运行的效果。在引入多线程之前,主进程的暂停是通过硬件级的中断实现的。尽管这是一种有用的方法,但编出的程序很难移植,由此造成了另一类的代价高昂问题。同样的,CPU的进步使多线程应运而生,从根本上解决的任务中断的问题。

四、进程和线程的关系

        我在网上好到一个很好的比喻,能够帮助我们更好的理解进程和线程的关系。

做个简单的比喻:进程是火车,线程是车厢

  • 线程在进程下行进(单纯的车厢无法运行)
  • 一个进程可以包含多个线程(一辆火车可以有多个车厢)
  • 不同进程间数据很难共享(一辆火车上的乘客很难换到另外一辆火车,比如站点换乘)
  • 同一进程下不同线程间数据很易共享(A车厢换到B车厢很容易)
  • 进程要比线程消耗更多的计算机资源(采用多列火车相比多个车厢更耗资源)
  • 进程间不会相互影响,一个线程挂掉将导致整个进程挂掉(一列火车不会影响到另外一列火车,但是如果一列火车上中间的一节车厢着火了,将影响到所有车厢)
  • 进程可以拓展到多机,进程最多适合多核(不同火车可以开在多个轨道上,同一火车的车厢不能在行进的不同的轨道上)
  • 进程使用的内存地址可以上锁,即一个线程使用某些共享内存时,其他线程必须等它结束,才能使用这一块内存。(比如火车上的洗手间)-"互斥锁"
  • 进程使用的内存地址可以限定使用量(比如火车上的餐厅,最多只允许多少人进入,如果满了需要在门口等,等有人出来了才能进去)-“信号量”

总结

        本文章旨在为读者阐明线程和进程的区别,当然,在使用线程和进程的时候会经常出现同时访问资源的问题,这就又产生了“锁”的概念,“锁”的概念不在此篇文章声明,有兴趣的小伙伴可以自己去了解一下。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值