多线程——概念

news2024/11/15 15:49:27

进程

操作系统中进行资源分配的基本单位,进程就是进行中的程序,处于运行过程中的。

三个基本特征:

  1. 独立性:进程是独立运行,独立获取资源,独立接收调度的基本单。没有进程本身的统一,其他进程不能访问到该进程所有的地址空间。
  2. 动态性:程序是静态的指令集合,进程就是活动在系统中的指令集合,进程有自己的生命周期和状态,程序没有。
  3. 并发性:多个进程在单处理器上并发执行。

并发:同一时刻,只有一个指令执行,多个进程被快速轮换,使宏观上有多个进程同时在执行的效果。

并行:同一时刻,有多个指令在多个处理器上同时执行。

形象一点:发:突突突;行:一排人齐步走;

在这里插入图片描述

线程

线程扩展了进程的概念,同一个进程可以并发出多个任务。
线程是进程的执行单元,是进程的组成部分,进程有多个线程,线程有一个父进程。
线程是独立运行的,不知道进程中其他线程的存在,运行的线程被挂起,另一个线程变可以运行。
一个线程可以创建和撤销另一个线程。

进程线程模型:
在这里插入图片描述

进程从操作系统中获得基本的内存空间,所有的线程共享进程的内存地址空间。每个线程也有自己私有的内存地址范围,其他线程不能访问。

所有的线程共享进程的内存地址空间,线程间的通信很容易,通过共享进程级全局变量实现。

在没有引入多线程概念之前,并发是发生在进程之间的,每一次的进程上下文切换都将导致系统调度算法的运行,以及各种 CPU 上下文的信息保存,非常耗时。线程级并发没有系统调度,进程分配到 CPU 使用时间,并发给其内部的各个线程使用。

和进程的时间片切换雷同,当进程中的线程拥有的时间片结束时保存 CPU 及寄存器中的线程上下文并交出 CPU,完成一次线程间切换。当然,当进程的 CPU 时间使用结束时,所有的线程必然被阻塞。

多线程优势

  1. 进程之间不能共享内存,线程之间共享内存很简单,
  2. 系统创建进程需要分配系统资源,创建线程代价小很多,使用多线程来实现多个任务并发比多进程的效率高。
  3. java语言内置了多线程功能支持,简化了java的多线程编程。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

无人机专业大学生参与无人机飞手执照培训技术分析

无人机专业的大学生参与无人机飞手执照培训,不仅是获取职业资质的重要步骤,也是提升专业技能和就业竞争力的关键。以下是对无人机专业大学生参与无人机飞手执照培训的技术分析: 1. 培训内容的全面性 无人机飞手执照培训涵盖了从无人机基础知…

数据取证:GetData Forensic Explorer,强大的文件分析和数据恢复工具

天津鸿萌科贸发展有限公司是 GetData 公司 Forensic Explorer 电子数据取证调查软件的授权代理商。 Forensic Explorer 是一款适合新手和经验丰富的调查员使用的取证工具,它将灵活易用的图形界面与高级排序、过滤、关键词搜索、数据恢复和脚本技术相结合。可以快速处…

5个惊人策略:打造完美的企业内部知识库

引言: 在这个快速变化的商业环境中,拥有一个结构化和高效的内部知识库不再是可选项,而是企业成功的必需品。SaaS(Software as a Service,软件即服务)平台的兴起,为企业打造这样的内部知识库提供…

一文带你springai+ollama实现chat

Spring AI Spring AI 项目旨在简化开发集成了人工智能功能的应用程序,而不增加不必要的复杂性。该项目从一些著名的 Python 项目中汲取灵感,例如 LangChain 和 LlamaIndex,但 Spring AI 并不是这些项目的直接移植。该项目的创立基于这样的信念…

龙芯+FreeRTOS+LVGL实战笔记(新)——02准备工程和驱动文件

本专栏是笔者另一个专栏《龙芯RT-ThreadLVGL实战笔记》的姊妹篇,主要的区别在于实时操作系统的不同,章节的安排和任务的推进保持一致,并对源码做了完善与优化,各位可以先到本人主页下去浏览另一专栏的博客列表(目前已撰…

基于Java的图书推荐系统的设计与实现(论文+源码)_kaic

摘要 随着中国城市现代化的发展进程越来越快,网络信息无论是数量还是传播速度早已超过纸质传媒,图书推荐系统是否能提供高效和优质的服务己成为图书阅读的重要环节。因此,需要构建一套基于Java编程语言的图书推荐系统。本系统使用Java语言和S…

嵌入式全栈开发学习笔记---shell脚本

目录 shell脚本有什么用? 第一个shell脚本 shell基本语法 shell变量 shell三种变量 环境级变量 用户级变量 系统级变量 在shell脚本中进行数学运算 shell数组 基本数组 关联数组 流程控制 If语句 Case语句 循环语句 While语句 For语句 上节我们学…

这可能是你在编程学习中最容易忽视的一课

引言 在编程学习的道路上,你是否曾感到困惑,面对着一堆复杂的术语和工具,不知道从何下手?刚开始编程时,是不是总觉得像走进了一片迷雾?别担心,你并不孤单。这篇文章将为你揭示“计算机教育中缺…

深度学习资料集合

社区推荐 AIQ 是一个专注于人工智能和机器学习的交流平台,旨在推动行业内的知识分享与技术交流。 专知 是一个聚焦于前沿科技和多领域知识的平台,提供丰富的文章和讨论,使用户能够深入理解机器学习及其应用。 DataTau DataTau 是一个数据…

Facebook与区块链:构建更安全的社交网络生态

随着数字化时代的不断推进,社交网络的安全性和隐私保护成为了用户最为关注的问题之一。Facebook,作为全球领先的社交媒体平台,正在探索如何利用区块链技术来增强其平台的安全性和透明度。这一探索不仅是对现有技术的补充,更是对未…

Android运行时权限详解

文章目录 Android运行时权限详解Android权限机制详解在程序运行时申请权限 Android运行时权限详解 Android的权限机制并不是什么新鲜事物,从系统的第一个版本开始就已经存在了。但其实之前Android的权限机制在保护用户安全和隐私等方面起到的作用比较有限&#xff…

利用OSINT追踪勒索组织活动

0X00前言 众所周知,勒索组织一直是臭名昭著的代名词。在当今网络世界上时时刻刻都存在着勒索软件的身影。正所谓,不知攻,焉知防。我们可以更据OSINT的方法,去追踪分析各大勒索组织的活动,以及状态。为应对可能的勒索攻…

【Python基础】元组类型

本文收录于 《Python编程入门》专栏,从零基础开始,分享一些Python编程基础知识,欢迎关注,谢谢! 文章目录 一、前言二、Python 元组2.1 创建特殊元组2.2 访问元组2.3 删除元组2.4 元组截取2.5 元组运算符2.6 元组内置函…

佰朔资本:9月券商金股出炉,这类股获机构力推

现在,券商新一批月度金股近期连续出炉。到9月1日,14家券商发布9月月度金股,举荐的104只金股会集分布在电子、机械设备、传媒、汽车等工作中。从个股来看,比亚迪、我国安全、阳光电源获2家以上券商共同举荐。别的,北方华…

30 静态路由

静态路由 一、配置静态路由 (一)静态路由特点 ​ 主要特点: ​ 由管理员手工配置,为单向条目通信双方的边缘路由器都需要指定,否则会导致数据包有去无回 (二)静态路由配置 ​ 使用ip rout…

开学季儿童护眼台灯怎么选择?盘点央视公布十大护眼灯!

随着年级的升高和学习内容的增加,学生的休闲娱乐时间逐渐减少,相反,他们在书桌前度过的时间却越来越多。近年来,由于电子产品的广泛使用,我国青少年的用眼负担显著增加。据权威机构预测,到2050年&#xff0…

ActiViz实战:使用vtkDistanceWidget实现两点测距功能

文章目录 一、效果图预览二、实现步骤三、C#完整实例代码一、效果图预览 二、实现步骤 1、通过vtkCellPicker拾取点坐标 2、通过vtkDistanceRepresentation2D设置起始点和结束点位置 3、通过vtkDistanceRepresentation2D的GetAxis()获取vtkAxisActor2D对象,并设置连线的样式 …

前端安全:如何防范跨站脚本攻击(XSS)

聚沙成塔每天进步一点点 本文回顾 ⭐ 专栏简介前端安全:如何防范跨站脚本攻击 (XSS)1. 引言2. 什么是跨站脚本攻击 (XSS)?2.1 XSS的分类 3. XSS攻击的危害4. XSS的常见攻击手法4.1 注入恶意脚本4.2 伪造表单和链接4.3 操纵DOM结构 5. 如何防范XSS攻击5.1…

Git使用(命令+idea快捷)

目录 一、概述 1.什么是Git 2.Git能干什么 3.简介 4.下载和安装 二、Git代码托管服务 1.常用的Git代码托管服务 2.使用码云代码托管服务 三、Git全局设置(常用命令) 1.命令 2.实现 四、获取Git仓库(常用命令) 1.两种方…

基于 cuda sdk 12.4.1安装cudnn8.9.7 步骤备忘——与cudnn9有差别

cuda环境崩了,运行 nvidia-smi后无法 连接 drvier,重装了 cuda 12.4.1 cudnn 8.9.7 因为看到pytorch daily 代码目前是支持 12.4的。发现 cudnn8 与 nv官网提供的cudnn9的安装时在文字上稍微有些差别, 主要是 cudnn8: sudo apt-get -y i…