首页 > 系统相关 >进程和线程

进程和线程

时间:2024-10-21 17:31:49浏览次数:5  
标签:浏览器 操作系统 一个 JavaScript 线程 进程

进程和线程

◼ 线程和进程是操作系统中的两个概念:
    进程(process):计算机已经运行的程序,是操作系统管理程序的一种方式;
    线程(thread):操作系统能够运行运算调度的最小单位,通常情况下它被包含在进程中;
◼ 听起来很抽象,这里还是给出我的解释:
    进程:我们可以认为,启动一个应用程序,就会默认启动一个进程(也可能是多个进程);
    线程:每一个进程中,都会启动至少一个线程用来执行程序中的代码,这个线程被称之为主线程;
    所以我们也可以说进程是线程的容器;
◼ 再用一个形象的例子解释:
    操作系统类似于一个大工厂;
    工厂中里有很多车间,这个车间就是进程;
    每个车间可能有一个以上的工人在工厂,这个工人就是线程;

操作系统的工作方式

◼ 操作系统是如何做到同时让多个进程(边听歌、边写代码、边查阅资料)同时工作呢?
    这是因为CPU的运算速度非常快,它可以快速的在多个进程之间迅速的切换;
    当我们进程中的线程获取到时间片时,就可以快速执行我们编写的代码;
    对于用户来说是感受不到这种快速的切换的;
◼ 你可以在Mac的活动监视器或者Windows的资源管理器中查看到很多进程

浏览器中的JavaScript线程

◼ 我们经常会说JavaScript是单线程(可以开启workers)的,但是JavaScript的线程应该有自己的容器进程:浏览器或者Node。
◼ 浏览器是一个进程吗,它里面只有一个线程吗?
    目前多数的浏览器其实都是多进程的,当我们打开一个tab页面时就会开启一个新的进程,这是为了防止一个页面卡死而造成
    所有页面无法响应,整个浏览器需要强制退出;
    每个进程中又有很多的线程,其中包括执行JavaScript代码的线程;
◼ JavaScript的代码执行是在一个单独的线程中执行的:
    这就意味着JavaScript的代码,在同一个时刻只能做一件事;
    如果这件事是非常耗时的,就意味着当前的线程就会被阻塞;
◼ 所以真正耗时的操作,实际上并不是由JavaScript线程在执行的:
    浏览器的每个进程是多线程的,那么其他线程可以来完成这个耗时的操作;
    比如网络请求、定时器,我们只需要在特性的时候执行应该有的回调即可;

标签:浏览器,操作系统,一个,JavaScript,线程,进程
From: https://www.cnblogs.com/hdc-web/p/18489934

相关文章

  • Linux_进程理解、状态与优先级(详细版)
    1.进程的概念课本概念:程序的一个执行实例,正在执行的程序等。内核观点:担当分配系统资源(CPU时间,内存)的实体。其实:进程=内核的相关管理数据结构(task_struct、页表等)+程序的代码和数据task_struct:是描述进程的结构体,是Linux内核的一种数据结构,它会被装载到RAM(内存)里并且包含着......
  • 揭秘PostgreSQL的隐藏奥秘:物理、内存与进程模型的深度解析与高效优化策略
    引言PostgreSQL作为一款强大的开源关系型数据库管理系统,以其灵活性、高性能和丰富的功能特性在全球范围内受到广泛欢迎。其底层架构的精心设计,使其在处理复杂查询、支持多种数据类型和高并发用户访问时表现出色。理解PostgreSQL的底层架构不仅有助于提升系统性能,还能帮助开......
  • java线程异步方法
    异步的八种实现方式:线程异步Thread/RunnableFuture+Callable异步框架CompletableFutureSpring注解@AsyncSpringApplicationEvent事件第三方异步框架,比如Hutool的ThreadUtilGuava异步消息队列1、线程异步publicclassThreadTestimplementsRunnable{......
  • Java多线程技能
      2.创建多线程的方式,有几种?怎么创建继承Thread类(一般不单独用)实现Runnable接口+Thread对象实现Callable接口+FutureTask<>对象+Thread对象线程池+(实现Callable接口+FutureTask<>对象)或者(实现Runnable接口)3.Thread类的常见APIcurrentThread()获取当前......
  • 从零开始写多线程
    1.Java多线程的基本概念1.1线程与进程进程:是操作系统分配资源的基本单位,每个进程都有独立的内存空间。线程:是进程内的一个执行单元,同一进程中的线程共享进程的内存空间,线程间的通信更为高效。1.2线程的好处提高系统响应性:可以实现用户界面与后台处理的并发执行,使得程序......
  • 高效并行计算:使用C++中的std::thread实现多线程编程
    解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界在现代计算中,随着多核处理器的普及,如何充分利用硬件资源以提升程序性能成为关键问题之一。C++标准库提供了丰富的多线程支持,其中std::thread是用于实现并发计算的核心工具之一。通过合理的多线程设计,程序可以实现......
  • Windows文件被某个进程占用,无法删除
    EXE文件打开PowerShell,按如下步骤操作:#查找进程tasklist|findstr"something.exe"#这行命令会得到如下回显,第二个字段就是进程号something.exe27024Console152,940K#按照进程号将这个进程杀掉taskkill/PID27024/F#按照进程名......
  • 多线程交替顺序打印ABC的多种方式
    面试题:有3个独立的线程,一个只会输出A,一个只会输出B,一个只会输出C,在三个线程启动的情况下,请用合理的方式让他们按顺序打印ABC。使用lock,Conditionimportjava.util.concurrent.locks.Condition;importjava.util.concurrent.locks.Lock;importjava.util.concurrent.lock......
  • webAPI中的键盘事件以及线程
    一、常用键盘事件1.键盘事件键盘事件触发条件onkeyup某个键盘按键松开时触发onkeydown某个键盘按键按下时触发onkeypress某个键盘按键按下时触发,但是不识别功能键,比如ctrl、shift和箭头等注意:如果使用document.addEventListener,则不用带ononkeypress和前面2个的区别的......
  • I\O进程线程(Day31)
    一、学习内容线程的同步互斥机制同步机制之条件变量概念1>条件变量实现的是一个生产者对多个消费者问题2>条件变量本质上维护了一个队列,所有消费者线程想要执行之前先要进入该队列中。等待生产者线程来唤醒。先进入等待队列中的线程被先唤醒。由于,对于消费者而言,这......