zoukankan      html  css  js  c++  java
  • 前端程序员也需要知道进程和线程

    进程和线程不只是后端开发人员需要了解,作为前端人员虽然不会直接和进程 线程打交道,但是理解其概念和意义也是至关重要的。

    先看概念


    进程是资源分配的基本单位,线程是调度的基本单位。进程包含线程,线程共用进程的资源。

     举个例子

    线程和进程区分不清,是很多新手都会犯的错误,没有关系。这很正常。先看看下面这个形象的比喻:

    - 进程是一个工厂工厂有它的独立资源

    - 工厂之间相互独立

    - 线程是工厂中的工人多个工人协作完成任务

    - 工厂内有一个或多个工人- 工人之间共享空间

    再完善完善概念:

    - 工厂的资源 -> 系统分配的内存独立的一块内存

    - 工厂之间的相互独立 -> 进程之间相互独立

    - 多个工人协作完成任务 -> 多个线程在进程中协作完成任务

    - 工厂内有一个或多个工人 -> 一个进程由一个或多个线程组成

    - 工人之间共享空间 -> 同一进程下的各个线程之间共享程序的内存空间包括代码段数据集堆等



    再巩固下


    如果是windows电脑中,可以打开任务管理器,可以看到有一个后台进程列表。对,那里就是查看进程的地方,而且可以看到每个进程的内存资源信息以及cpu占有率。

    所以,应该更容易理解了:进程是cpu资源分配的最小单位(系统会给它分配内存)

    最后,再用较为官方的术语描述一遍:

    • 进程是cpu资源分配的最小单位(是能拥有资源和独立运行的最小单位)

    • 线程是cpu调度的最小单位(线程是建立在进程的基础上的一次程序运行单位,一个进程中可以有多个线程)

    tips

    • 不同进程之间也可以通信,不过代价较大

    • 现在,一般通用的叫法:单线程与多线程,都是指在一个进程内的单和多。(所以核心还是得属于一个进程才行)

    浏览器是多进程的

    理解了进程与线程了区别后,接下来对浏览器进行一定程度上的认识:(先看下简化理解)

    • 浏览器是多进程的

    • 浏览器之所以能够运行,是因为系统给它的进程分配了资源(cpu、内存)

    • 简单点理解,每打开一个Tab页,就相当于创建了一个独立的浏览器进程。

    关于以上几点的验证,请再第一张图

    图中打开了Chrome浏览器的多个标签页,然后可以在Chrome的任务管理器中看到有多个进程(分别是每一个Tab页面有一个独立的进程,以及一个主进程)。
    感兴趣的可以自行尝试下,如果再多打开一个Tab页,进程正常会+1以上

    注意:在这里浏览器应该也有自己的优化机制,有时候打开多个tab页后,可以在Chrome任务管理器中看到,有些进程被合并了
    (所以每一个Tab标签对应一个进程并不一定是绝对的)

     下回聊聊浏览器的进程和线程,这个有意思了就。

    本文参考:https://mp.weixin.qq.com/s/whtgk3LShhgEhF5pMEpfYw

  • 相关阅读:
    JVM概论
    设计模式之工厂模式
    Java基础之多线程简述
    设计模式之单例模式
    设计模式之模板方法模式
    设计模式之适配器模式
    设计模式之策略模式
    机器学习浅析之最优解问题(二)
    MapReduce架构与生命周期
    Hadoop系列之实验环境搭建
  • 原文地址:https://www.cnblogs.com/crith/p/9668442.html
Copyright © 2011-2022 走看看