zoukankan      html  css  js  c++  java
  • 进程与线程

    现在操作系统可以同时运行多个任务,例如一边听歌,一边码字,一边浏览网页,同时还有很多任务在后台运行着。对于操作系统来说,一个任务就是一个进程(process)。当我们在码字的时候,word可以同时进行打字,打印等等。打字,打印又对应着进程里的线程。

    一、概念

    进程:进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。

    线程:线程(thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。

    二、区别

    进程与线程的关系就像火车与车厢的关系。在这里我把进程看作火车,把线程看作车厢。

    1、根本区别

    线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位。

    只有火车能在铁轨上运行,单独一个车厢无法在铁轨上运行。

    2、包含关系

    一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线。

    一列火车有多节车厢,每节车厢程载着相应的旅客。

    3、内存分配

    进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间。

    当我们坐火车时,我们可以从头车厢到尾车厢。

    4、资源开销

    线程之间切换的开销要远远高于进程切换的开销

    当我们想要从一节车厢转移到另一节车厢的时候,我们会发现很容易,直接溜溜达达的过去就可以了。但是当我们尝试从这列火车上换到另外一列火车上的时候会发现要困难很多。

    5、影响关系

    一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃整个进程都死掉。

    在火车运行过程中,其中一节车厢突然发生火灾,此时火车将无法继续运行。但是对于其他轨道上的火车并没有太大影响。

    6、执行过程

    线程不能单独执行。

    火车在运行时,需要从始发站发车,顺序经过途径站点,最终在重点站结束旅程。车厢必须依附于火车才能实现旅程。

    版权声明:本文为博客园博主「Spear_J」的原创文章,编写不易,转载请附上原文出处链接及本声明。
    https://www.cnblogs.com/lmh15054109/p/15541116.html

  • 相关阅读:
    全排列算法(java实现) 组合算法实现
    int -2147483648 ----- 2147483647
    Gradel 多渠道打包 代码混淆
    Android开发环境搭建
    自定义相册、九宫格显示图片
    新技术:retrofit
    新技术:dagger
    主流架构:MVVP
    GreenDao3.2的使用
    第三方框架:EventBus
  • 原文地址:https://www.cnblogs.com/lmh15054109/p/15541116.html
Copyright © 2011-2022 走看看