进程线程、并行并发

什么是进程

开发写的代码我们称为程序,那么将开发的代码运行起来。我们称为进程。

  • 通俗解释
    当我们运行一个程序,那么我们将运行的程序叫进程。

  • 专业解释
    进程是申请一块内存空间,将数据放到内存空间中去, 是申请数据的过程是最小的资源管理单元
    进程是线程的容器

程序与进程的区别

程序是数据和指令的集合, 是一个静态的概念, 就是一堆代码, 可以长时间的保存在系统中
进程是程序运行的过程, 是一个动态的概念, 进程存在着生命周期, 也就是说进程会随着程序的终止而销毁, 不会永久存在系统中

进程之间交互

进程之间通过 TCP/IP 端口实现

什么是线程

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

  • 专业解释
    进程的一条流水线, 只用来执行程序,而不涉及到申请资源, 是程序的实际执行者最小的执行单元

线程之间交互

多个线程共享同一块内存,通过共享的内存空间来进行交互

进程与线程的关系

可以说 "进程" 包含 "线程", "线程" 是 "进程" 的子集

例子:
我们打开一个聊天软件,这就是开启了一个进程;当我们在软件里面打开一些功能,比如空间, 扫一扫, 设置...,这些操作就是线程

  • 进程是线程的容器

并发

并发是多个任务交替使用CPU,同一时刻只有一个任务在跑;
针对一个问题,想到了一个可以拆解为多个【并发】的任务,这些任务执行时因为只有一个CPU只能“切换”的跑。

  • 单核下使用多道技术实现

并行

并行是多个任务同时跑;
并行必须有多核才能实现,否则只能实现并发(伪并行)
如果这些并行执行的任务是解决同一个问题的,那么他们既是【并发】的,同时也是【并行】的。

串行

一个程序完完整整的运行完,再运行下一个进程。

高并发

不像【并发】说的是“处理”,【并行】说的是“执行”,【高并发】说的是最终效果。只要能达到效果,不管怎么实现都行。
因此,极端一点【高并发】甚至并不一定需要【并行】,只要处理速度快的足够满足要求就可以。
如启动一个nginx的【OS进程】,它只能用到一个CPU核心,也就不可能【并行】。但是他如果能每秒能处理10万个请求,而业务需求只要求8万个请求就可以了,那么这个单进程的nginx本身就算【高并发】了。

【高并发】是指可以让软件系统在一段时间内能够处理大量的请求。比如每秒钟可以完成10万个请求。这是互联网系统的一个重要的特征。

除了【并发】和【并行】,【高并发】还需要:

数据表普遍被分库分表,否则单机放不下,或者查询性能不足解决分布式事务因为机器都可能坏,为了保证少数机器坏掉不会影响处理的性能,必须引入HA机制因为系统都有极限,超过极限响应能力就会急剧下降。因此必须引入限流的方案来保护系统这么复杂的系统会涉及到N个service,N个存储,N个队列…… 这些资源的管理又成为了新的问题,这又需要对集群和服务做管理这么多服务,肯定要解决分布式的Tracing和报警问题……当面试的时候提起【高并发】,大概率是希望面试者聊聊上面这些主题。但请特别特别留意,不同领域的【高并发】实际的意思(怎么算“高”,如何达成,哪些问题是关键问题)会非常不同。电商的高并发,抖音的高并发,12306卖火车票的高并发,基金交易系统的高并发,海量数据处理的高并发,这些问题其实都很不同。所以我很建议每次都讨论具体的问题,而非泛泛谈论【高并发】这个名词。

参考和转载
https://www.zhihu.com/question/307100151
https://www.zhihu.com/question/307100151/answer/894486042

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/709897.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysqldump备份表流程

以下流程整理引用文章:https://cloud.tencent.com/developer/article/1072482?from_column=20421&from=20421

如何选择一款安全高效的数据自动同步工具?

随着科技的不断发展,企业处理的数据量愈发庞大。数字化浪潮的涌现使得数据在业务活动和决策中的角色变得日益重要,然而这些数据往往分布在不同的位置,需要进行同步和分类,以便更有效地利用。以下是一些常见的数据自动同步场景: 企业数据同步:企业可能会使用数据同步来确保…

美团一面:项目中有 10000 个 if else 如何优化?想了半天,被问懵了!

大家好,我是R哥。 最近做 Java 面试辅导,有个兄弟面试美团,遇到一个特别有意思的问题:一万个 if else 如何优化,有好的解决方案吗?我看到这问题都有点懵逼,现实项目中怎么可能会有 10000 个 if else 的代码,至少我工作 10 余年没见过样的代码。 关键要写完这 10000 行的…

如何通过数据下发平台,实现总分支机构间数据安全流转?

随着企业业务的快速发展,不少大型企业会在全国乃至全球,设立总部-分部-办事处/网点等多层级的结构。在日常经营中,总部与分支之间存在着较为频繁的数据互动关系,经常会存在文件数据下发的场景。数据下发平台是专门设计管理和下发大量文件的系统,它能够将文件从中心服务器传…

radioGroup.check()有两次事件

解决方法 :使用radioBotton.setChecked()方法来解决 参考:https://www.jianshu.com/p/f69cd82cd85a

聊聊如何利用spring实现服务隔离

前言 假设我们有个场景,我们需要实现服务之间的数据隔离、配置隔离、依赖的spring bean之间隔离。大家会有什么实现思路?今天给大家介绍spring-cloud-context里面有个NamedContextFactory可以达到上面的效果 NamedContextFactory简介 NamedContextFactory可以实现子容器,通过…

让机台数据传输更高效可靠,一文了解!

在汽车制造业中,机台数据传输和管理是一个关键环节,它涉及到生产效率、产品质量和企业运营的多个方面。以下是一些机台数据传输和管理的关键点:车载通信技术:随着汽车智能化的提升,车载通信技术变得尤为重要。车内总线通信与车载无线通信技术的提升,使得智能电动汽车成为…

openpyxl styles 模块

styles 模块说明 styles 模块提供了许多用于设置和控制单元格样式的类和方法。这些类和方法可以帮助你定制 Excel 工作表中单元格的外观,包括字体样式、边框、填充颜色等。 styles 模块主要功能 Font(字体):Font 类用于定义和修改单元格中文本的字体样式,如字体名称、大小…

dotnet 命令行工具解决方案 PomeloCli

目录PomeloCli 是什么为什么实现太多的工具太少的规范基于二进制拷贝分发难以为继快速开始1. 引用 PomeloCli 开发命令行应用2. 引用 PomeloCli 开发命令行插件开发命令行插件搭建私有 nuget 服务发布命令行插件3. 使用 PomeloCli 集成已发布插件安装命令行宿主集成命令行插件…

华为云CodeArts 12大安全防护机制,端到端全面保障软件供应链安全!

华为云CodeArts推出软件供应链安全解决方案,对软件作业流12个安全威胁点加对应防护机制。全球网络安全事件频发不断,企业纷纷损失惨重。2021年11月,知名logo4j漏洞波及全球多达6万款开源软件,70%以上企业受影响。2022年3月,大型加油站服务商遭到勒索软件攻击,要求其支付2…

MLOps 学习之旅「GitHub 热点速览」

又是 AI 神仙打架的一周,上周 OpenAI 发布了最新的 GPT-4o 模型,而谷歌也紧跟着开源了 Gemma 2 模型。随着 AI 大模型不断地变强,各大科技巨头正利用它们重塑自家的产品,这也让大模型算法工程师变得炙手可热,相关岗位需求正旺。 对于普通程序员来说,想要转型成为大模型算…