简单理解进程(process)和线程(thread)

架构篇18:单服务器高性能模式-PPC与TPC 本篇我们来看看单服务器高性能模式:PPC 与 TPC。 阅读详情

进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。

最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。

1.

计算机的核心是 CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。

2.

假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候,其他车间都必须停工。背后的含义就是,单个 CPU 一次只能运行一个任务。

3.

进程就好比工厂的车间,它代表 CPU 所能处理的单个任务。任一时刻,CPU 总是运行一个进程,其他进程处于非运行状态。

  4.

一个车间里,可以有很多工人。他们协同完成一个任务。

5.

线程就好比车间里的工人。一个进程可以包括多个线程。

6.

车间的空间是工人们共享的,比如许多房间是每个工人都可以进出的。这象征一个进程的内存空间是共享的,每个线程都可以使用这些共享内存。

7.

可是,每间房间的大小不同,有些房间最多只能容纳一个人,比如厕所。里面有人的时候,其他人就不能进去了。这代表一个线程使用某些共享内存时,其他线程必须等它结束,才能使用这一块内存。

8.

一个防止他人进入的简单方法,就是门口加一把锁。先到的人锁上门,后到的人看到上锁,就在门口排队,等锁打开再进去。这就叫"互斥锁"(Mutual exclusion,缩写 Mutex),防止多个线程同时读写某一块内存区域。

9.

还有些房间,可以同时容纳n个人,比如厨房。也就是说,如果人数大于n,多出来的人只能在外面等着。这好比某些内存区域,只能供给固定数目的线程使用。

10.

这时的解决方法,就是在门口挂n把钥匙。进去的人就取一把钥匙,出来时再把钥匙挂回原处。后到的人发现钥匙架空了,就知道必须在门口排队等着了。这种做法叫做"信号量"(Semaphore),用来保证多个线程不会互相冲突。

不难看出,mutex 是 semaphore 的一种特殊情况(n=1 时)。也就是说,完全可以用后者替代前者。但是,因为 mutex 较为简单,且效率高,所以在必须保证资源独占的情况下,还是采用这种设计。

11.

操作系统的设计,因此可以归结为三点:

(1)以多进程形式,允许多个任务同时运行;

(2)以多线程形式,允许单个任务分成不同的步骤运行;

(3)提供协调机制,一方面防止进程之间和线程之间产生冲突,另一方面允许进程之间和线程之间共享资源。

基于Qt与PaddleOCR的跨平台OCR工具开发实战 本文详细介绍了基于Qt与PaddleOCR开发跨平台OCR工具的实战经验。通过Qt的跨平台特性和PaddleOCR的高效识别能力,开发者可以快速构建支持Windows、Linux和macOS的OCR工具。文章涵盖了环境配置、核心功能实现、性能优化及打包发布等关键环节,特别针对中文识别、内存管理和多线程处理等常见问题提供了解决方案。 阅读详情

相关推荐

避坑指南:Abaqus网格划分中90%用户会遇到的5个质量陷阱(附解决方案)

本文深入剖析Abaqus网格划分中90%用户会遇到的5个典型质量陷阱,包括单元扭曲、扫掠网格失败、尺寸梯度控制等,并提供工程级解决方案。通过Python脚本和虚拟拓扑等技巧,帮助用户提升网格质量,确保有限元分析结果的可靠性,适用于CAE工程师和仿真分析师。

weixin_29243279的博客 96

cpu线程_cpu 核心数与线程数

cpu、core、processor、thread 等概念,有的是物理的有的是逻辑的,在不同语境中含义不尽相同。 “电脑有几个 cpu ?” “多线程程序设置多少个线程数效果好?”“linux cpuinfo / top 里展示的 cpu 的信息如何理解?”物理 cpu 数(physical cpu)指主板上实际插入的 cpu 硬件个数(socket)。(但是这一概念经常被泛泛的说成是 cpu 数...

weixin_39519769的博客 1235

非root用户如何在CentOS7集群上编译安装OpenFOAM6

本文详细介绍了在CentOS7集群上以非root用户身份编译安装OpenFOAM6的完整流程。通过环境准备、依赖包离线获取、源码编译安装等步骤,解决了集群环境下权限和依赖问题,特别针对OpenMPI和Boost库提供了优化配置建议,帮助用户高效完成安装并优化性能。

weixin_28826961的博客 681

Mina、Netty、Twisted一起学(十):线程模型

要想开发一个高性能的TCP服务器,熟悉所使用框架的线程模型非常重要。MINA、Netty、Twisted本身都是高性能的网络框架,如果再搭配上高效率的代码,才能实现一个高大上的服务器。但是如果不了解它们的线程模型,就很难写出高性能的代码。框架本身效率再高,程序写的太差,那么服务器整体的性能也不会太高。就像一个电脑,CPU再好,内存小硬盘慢散热差,整体的性能也不会太高。玩过Android开发的同学会

叉叉哥的BLOG 5746

手把手教你用SlowFast训练自定义手势识别数据集(附FFmpeg抽帧技巧)

本文提供了一份基于SlowFast架构训练自定义手势识别数据集的完整实战指南。文章重点剖析了数据准备的核心挑战,详细讲解了利用FFmpeg进行高、低帧率抽帧的技巧,并介绍了构建半自动标注流水线、生成符合SlowFast要求的AVA格式数据集文件的具体方法。最后,针对手势识别场景,给出了关键的模型训练配置与调优建议,帮助开发者高效完成从数据到模型的全流程。

s1t2u3的博客 909

AI智能体赋能Cypress:自动化前端测试的新范式

自动化测试是现代软件工程保障质量的核心实践,其原理是通过脚本模拟用户操作,对软件功能进行验证。随着大语言模型(LLM)和智能体(Agent)技术的发展,测试自动化正迈向智能化新阶段。智能体能够理解自然语言描述的测试需求,并自主规划、执行测试步骤,这为应对前端UI频繁变更、测试用例维护成本高等挑战提供了新思路。在工程实践中,将Cypress这一流行的前端测试框架封装为智能体可调用的标准化技能(Skill),是实现这一愿景的关键。通过设计清晰的交互协议和状态管理机制,智能体可以像人类测试工程师一样“感知”页面状

weixin_33726318的博客 684

CPU、Processor、Core的区别

Question: 怎么理解CPU、processor、core的区别 如果CPU包含ALU(运算器)、内存单元、IO的话,那么 a) processor是什么,它包含哪些东西 b) CPU和processor的关系是怎样的 c) Core又是什么  下文中:Processor=处理器,core=核 Answer: 1 处理器的演变 'Processor','Core', 和 '

沁梦阿尔卑斯 6万+

AUTOSAR 导入DBC ISOLAR工程配置

ISOLAR工程配置-dbc导入

汽车电子电气 2406

线程thread、进程Process

一、概念 1.线程(thread):是操作系统能够进行运算调度的最小单位。操作系统分配资源以进程为基本单位。 2.进程(Process):操作系统是分配资源和调度资源的基本单位,进程是线程的容器。同一进程中的多条线程将共享该进程中的全部系统资源。 二、具体说明 在操作系统windows中,一个应用程序(IE浏览器、QQ、网易云音乐等等)至少包含一个进程(Process),一个进程至少包含一个线程(...

预立数据科技 1214

Exchange Server 2013 运维系列——邮箱配额设置(管理中心)

邮箱配额需要设置三个参数: 1、发出警告限制:表示在向用户发出警告之前的最大存储限制。如果邮箱大小达到或超过指定值,Exchange 将向邮箱用户发送警告消息。 2、禁止发送限制:表示邮箱的“禁止发送”限制。如果邮箱大小达到或超过指定的限制,Exchange 将阻止邮箱用户发送新邮件,并显示一条描述性错误消息。 3、禁止发送和接收限制:表示此邮箱的“禁止发送和接收”限制。如果邮箱大小

白昼的技术专栏 1万+

CryoEM - 使用 ChimeraX 工具 操作 冷冻电镜的 MRC 密度图(Density Map) 教程

由冷冻电镜 CryoSparc 软件所生成的 Volume,需要观察其内部结构,建议使用 ChimeraX 进行操作。

AGI 4959

windows 一个进程(Process)最多可以生成多少个线程(Thread)

1.进程中创建线程的限制 默认情况下,一个线程的栈要预留1M的内存空间,而一个进程中可用的内存空间只有2G,所以理论上一个进程中最多可以开2048个线程,但是内存当然不可能完全拿来作线程的栈,所以实际数目要比这个值要小。 #define MAX_THREADS 50000 #include Windows.h> #include stdio.h> DWORD WINAPI T

百鸣的专栏 1万+

Linux存储软件栈剖析之第5篇:F2FS文件系统

F2FS是三星专为NAND闪存设计的开源文件系统,通过异地更新、磨损均衡等机制优化闪存特性。其架构采用层次化存储管理(Block→Segment→Section→Zone)和多日志区域设计,基于数据热度分类(热/温/冷数据)提升性能。核心创新包括节点地址表(NAT)解决级联更新问题,以及基于成本的垃圾回收算法。F2FS通过检查点机制确保崩溃一致性,并利用并行访问能力充分发挥闪存性能优势,显著降低写放大效应,延长设备寿命。

指尖动听知识库 197

进程(process) vs 线程(Thread)

🚀 多方面理解进程(process)线程(Thread)本文主要介绍了进程和线程的基本概念、区别以及操作系统如何调度线程的方式。同时,还介绍了线程锁的核心原理和实现方式。在多线程编程中,理解进程和线程的概念以及线程锁的使用,对于保证程序的安全性和性能非常重要。参考 : https://zhuanlan.zhihu.com/p/258049386。

Bruce__taotao的博客 2489

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

C# 进程(Process)与线程(Thread)的理解及运用

线程的理解及运用一、进程、线程和协程的理解1、进程、线程、协程的定义2、串行,并行和并发的基本概念二、线程的使用 一、进程、线程和协程的理解 在unity中可以使用多线程去做 解压资源、更新资源等操作。因为单开线程的话 不会影响主线程卡顿,这样UI就不会卡了。但是开的线程里边不能执行unity主线程的mono代码。线程启动后,执行完毕自动结束该线程、可以同时启动多个线程做事。 比如微信,在启动的时候就会开两个线程。微信有两个进程分别是com.tencent.mm(A), com.tencent.mm:pus

小程小程,永不消沉 4338

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Java进程(Process)和线程(Thread)的学习

进程和线程进程和线程进程和线程都是操作系统中用于执行任务的单位,它们之间的主要区别在于资源的分配和管理方式。1.什么是进程和线程?

2403_83203286的博客 1035

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

深入理解Node.js 进程与线程(8000长文彻底搞懂)

前言 进程与 线程是一个程序员的必知概念,面试经常被问及,但是一些文章内容只是讲讲理论知识,可能一些小伙伴并没有真的理解,在实际开发中应用也比较少。本篇文章除了介绍概念,通过Node.js 的角度讲解 进程与 线程,并且讲解一些在项目中的实战的应用,让你不仅能迎战面试官还可以在实战中完美应用。 文章导览 面试会问 Node.js是单线程吗? Node.js 做耗时的计...

程序员成长指北 1万+

Linux中process、thread、task的认识

Linux中process、thread、task的认识 进程的术语是 process,是 Linux 最基础的抽象,另一个基础抽象是文件。 进程包括执行中的程序以及相关的资源 (包括cpu状态、打开的文件、挂起的信号、tty、内存地址空间等)。进程 = n*执行流 + 资源,n>=1。 我们面试时常问的一些关于进程和线程的概念,这里复习一下: 进程是资源分配的基本单位,线程是调度的基本单位 进程是资源的集合,这些资源包括内存地址空间,文件描述符等等,一个进程中的多个线程共享这些资源。 CPU对任务

路先生的杂货铺,学习总结+好文分享 1938

进程(Process)和线程(Thread)

进程(Process)和线程(Thread)1.Process特点(1)进程在执行过程中有内存单元的初始入口点,并且进程存活过程中始终拥有独立的内存地址空间;(2)进程的生存期状态包括创建、就绪、运行、阻塞和死亡等类型;(3)从应用程序进程在执行过程中向CPU发出的运行指令形式不同,可以将进程的状态分为用户态和核心态。处于用户态下的进程执行的是应用程序指令、处于核心态下的应用程序进

Forrest He的专栏 3046

理解process(进程)、thread(线程)

理解process(进程)、thread(线程)

Acmera-播客分享 2411

从内核角度看Linux 线程和进程的区别

多数人都会讲说线程和进程在内核中是相同的,没有严格地做区分。这样讲是没错了,但对于应用开发者来说,这样讲是有点笼统。本文将从内核角度,分析线程和进程之间的区别,希望能对这一块感兴趣的人提供借鉴意义。 1 数据结构 task_struct Linux中无论是进程还是线程,只要是调度单元,都通过 structtask_struct表示。这也是为什么讲说进程和线程在内核相同的原因。 struct...

Zpeg的博客 6216

Thread线程与Process进程

最重要的一个概念 一个线程thread是一个进程process中的一个执行流程,简单的理解:一个进程相当于多个线程的集合,一个进程至少包含一个线程。 Definition定义 ------------- Process 进程是应用程序的一次运行活动; 从操作系统核 心角度来说,进程是操作系统分配和调度系统内存资源、cpu时间片等资源的基本单位,为正在运行的应用程序提供运行环境。...

潇湘夜雨 719

进程process 和 线程thread 的区别

进程,process,线程,thread

weixin_45852041的博客 1631

简单理解:CPU物理核心数,核心数,线程数,进程,线程,协程,并发,并行的概念

栈空间的使用是有明确限制的,栈中相邻的任意两条数据在地址上都是连续的。每隔一定时间,大概几十毫秒,就会切换线程,即切换任务(可能是同一个进程的线程,也可能是另外一个进程的线程,如果是其它进程的线程,会切换CR3)。thread_info 结构体中有一个 struct,即 task_struct *task,task 指向的就是这个进程或线程相关的 task_struct 对象(也在内核空间中),这个对象叫做进程描述符(叫做任务描述符更为贴切,因为每个线程也都有自己的 task_struct)。

哦豁灬 2万+

【通俗易懂】理解进程(process), 线程(thread), 并发(concurrency), 并行(parallel)

【通俗易懂】理解进程(process), 线程(thread), 并发(concurrency), 并行(parallel)

备忘录式博客 3030

线程(Thread)与进程(Process)基础

这是操作系统中必知的基本概念,也是当初面试时让我铩羽而归的问题,今天就来整理一下吧!

2302_79769914的博客 1006
上一篇: JSON数据的解析
下一篇: 为什么安卓机没有iPhone流畅?
Net_Joe
博客等级 码龄12年 11粉丝 12原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值