0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

标签 > 多线程

多线程

+关注 0人关注

多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。

文章: 200
视频: 66
浏览: 19918
帖子: 74

多线程简介

  多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。具有这种能力的系统包括对称多处理机、多核心处理器以及芯片级多处理(Chip-level multithreading)或同时多线程(Simultaneous multithreading)处理器。在一个程序中,这些独立运行的程序片段叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理(Multithreading)”。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程(台湾译作“执行绪”),进而提升整体处理性能。

多线程百科

  多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。具有这种能力的系统包括对称多处理机、多核心处理器以及芯片级多处理(Chip-level multithreading)或同时多线程(Simultaneous multithreading)处理器。在一个程序中,这些独立运行的程序片段叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理(Multithreading)”。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程(台湾译作“执行绪”),进而提升整体处理性能。

  硬件支持

  多线程硬件支持的目标,即支持快速进行就绪态线程、执行态线程间的切换。为达成这个目标,需要硬件实现保存、恢复程序看得见的寄存器以及一些对程序执行有影响的控制寄存器(如程序计数器PC、程序状态寄存器SR)。从一个线程切换到另一个线程对硬件来讲意味着保存当前线程的一组寄存器的值,并恢复即将执行线程的一组寄存器的值。

  新增这些功能的硬件有以下优势:

  线程切换能够在一个 CPU 周期内完成(有些硬件甚至没有开销,上个周期在运行线程A,下个周期就已在运行线程B)。

  每个线程看起来就像是独自运行的,即没有与其他线程共享硬件资源。对操作系统来说,通常每个线程都被视做独占一个处理器,这样将简化系统软件的设计(尤其是对于支持多线程的操作系统)。

  为了在各个线程间有效率的进行切换,每个线程需要保存自己的一组寄存器集(register set)。有些硬件设计成每个处理器核心具有两组寄存器文件,以实现在多个线程间快速切换。

  多线程有什么用?

  这么解释问题吧:

  1。单进程单线程:一个人在一个桌子上吃菜。

  2。单进程多线程:多个人在同一个桌子上一起吃菜。

  3。多进程单线程:多个人每个人在自己的桌子上吃菜。

  多线程的问题是多个人同时吃一道菜的时候容易发生争抢,例如两个人同时夹一个菜,一个人刚伸出筷子,结果伸到的时候已经被夹走菜了。。。此时就必须等一个人夹一口之后,在还给另外一个人夹菜,也就是说资源共享就会发生冲突争抢。

  1。对于 Windows 系统来说,【开桌子】的开销很大,因此 Windows 鼓励大家在一个桌子上吃菜。因此 Windows 多线程学习重点是要大量面对资源争抢与同步方面的问题。

  2。对于 Linux 系统来说,【开桌子】的开销很小,因此 Linux 鼓励大家尽量每个人都开自己的桌子吃菜。这带来新的问题是:坐在两张不同的桌子上,说话不方便。因此,Linux 下的学习重点大家要学习进程间通讯的方法。

  --

  补充:有人对这个开桌子的开销很有兴趣。我把这个问题推广说开一下。

  开桌子的意思是指创建进程。开销这里主要指的是时间开销。

  可以做个实验:创建一个进程,在进程中往内存写若干数据,然后读出该数据,然后退出。此过程重复 1000 次,相当于创建/销毁进程 1000 次。在我机器上的测试结果是:

  UbuntuLinux:耗时 0.8 秒

  Windows7:耗时 79.8 秒

  两者开销大约相差一百倍。

  这意味着,在 Windows 中,进程创建的开销不容忽视。换句话说就是,Windows 编程中不建议你创建进程,如果你的程序架构需要大量创建进程,那么最好是切换到 Linux 系统。

  大量创建进程的典型例子有两个,一个是 gnu autotools 工具链,用于编译很多开源代码的,他们在 Windows 下编译速度会很慢,因此软件开发人员最好是避免使用 Windows。另一个是服务器,某些服务器框架依靠大量创建进程来干活,甚至是对每个用户请求就创建一个进程,这些服务器在 Windows 下运行的效率就会很差。这“可能”也是放眼全世界范围,Linux 服务器远远多于 Windows 服务器的原因。

  --

  再次补充:如果你是写服务器端应用的,其实在现在的网络服务模型下,开桌子的开销是可以忽略不计的,因为现在一般流行的是按照 CPU 核心数量开进程或者线程,开完之后在数量上一直保持,进程与线程内部使用协程或者异步通信来处理多个并发连接,因而开进程与开线程的开销可以忽略了。

  另外一种新的开销被提上日程:核心切换开销。

  现代的体系,一般 CPU 会有多个核心,而多个核心可以同时运行多个不同的线程或者进程。

  当每个 CPU 核心运行一个进程的时候,由于每个进程的资源都独立,所以 CPU 核心之间切换的时候无需考虑上下文。

  当每个 CPU 核心运行一个线程的时候,由于每个线程需要共享资源,所以这些资源必须从 CPU 的一个核心被复制到另外一个核心,才能继续运算,这占用了额外的开销。换句话说,在 CPU 为多核的情况下,多线程在性能上不如多进程。

  因而,当前面向多核的服务器端编程中,需要习惯多进程而非多线程。

查看详情

多线程知识

展开查看更多

多线程技术

Python中多线程和多进程的区别

Python中多线程和多进程的区别

Python作为一种高级编程语言,提供了多种并发编程的方式,其中多线程与多进程是最常见的两种方式之一。在本文中,我们将探讨Python中多线程与多进程的...

2024-10-23 标签:编程语言多线程python 306 0

全局视角看技术-Java多线程演进史

作者:京东科技 文涛 全文较长共6468字,语言通俗易懂,是一篇具有大纲性质的关于多线程的梳理,作者从历史演进的角度讲了多线程相关知识体系,让你知其然知...

2024-10-10 标签:JAVA多线程JVM 883 0

一文掌握Python多线程

使用线程可以把占据长时间的程序中的任务放到后台去处理。

2024-08-05 标签:cpu多线程线程 772 0

什么是自旋锁什么是互斥锁他们有什么区别

自旋锁和互斥锁是两种常见的同步机制,用于在多线程程序中保护共享资源。它们的主要区别在于等待锁的方式和适用场景。 自旋锁 自旋锁(Spinlock)是一种...

2024-07-10 标签:cpu操作系统多线程 452 0

鸿蒙OS开发实例:【ArkTS类库多线程@Concurrent装饰器校验并发函数】

鸿蒙OS开发实例:【ArkTS类库多线程@Concurrent装饰器校验并发函数】

在使用TaskPool时,执行的并发函数需要使用该装饰器修饰,否则无法通过相关校验。从API version 9开始,该装饰器支持在ArkTS卡片中使用。

2024-04-02 标签:多线程鸿蒙鸿蒙OS 589 0

鸿蒙OS开发实例:【ArkTS类库多线程CPU密集型任务TaskPool】

鸿蒙OS开发实例:【ArkTS类库多线程CPU密集型任务TaskPool】

CPU密集型任务是指需要占用系统资源处理大量计算能力的任务,需要长时间运行,这段时间会阻塞线程其它事件的处理,不适宜放在主线程进行。例如图像处理、视频编...

2024-04-01 标签:cpu多线程鸿蒙 785 0

鸿蒙OS开发案例:【ArkTS类库多线程CPU密集型任务Worker】

鸿蒙OS开发案例:【ArkTS类库多线程CPU密集型任务Worker】

通过某地区提供的房价数据训练一个简易的房价预测模型,该模型支持通过输入房屋面积和房间数量去预测该区域的房价,模型需要长时间运行,房价预测需要使用前面的模...

2024-04-01 标签:cpu多线程鸿蒙OS 1014 0

鸿蒙OS开发实例:【ArkTS类库多线程I/O密集型任务开发】

鸿蒙OS开发实例:【ArkTS类库多线程I/O密集型任务开发】

使用异步并发可以解决单次I/O任务阻塞的问题,但是如果遇到I/O密集型任务,同样会阻塞线程中其它任务的执行,这时需要使用多线程并发能力来进行解决。 ...

2024-04-01 标签:多线程鸿蒙鸿蒙OS 453 0

GPU CUDA 编程的基本原理是什么

GPU CUDA 编程的基本原理是什么

神经网络能加速的有很多,当然使用硬件加速是最可观的了,而目前除了专用的NPU(神经网络加速单元),就属于GPU对神经网络加速效果最好了

2024-03-05 标签:神经网络gpusram 724 0

单核多线程的意义是什么?

一切开始的前提是,你需要知道,CPU执行的所有代码其实就是一条条指令。

2024-02-20 标签:cpuC语言多线程 930 0

查看更多>>

多线程资讯

AMD EPYC 9554处理满足高频率、多线程所需

  在数字时代,算力,在加速千行百业的发展中成为了生产力的源泉。AMD秉承一路创新的精神,一直关注客户所需,专注于打造业内一流的数据中心处理器,为众多行...

2024-06-29 标签:处理器amd数据中心 1207 0

从多线程设计模式到对 CompletableFuture 的应用

从多线程设计模式到对 CompletableFuture 的应用

最近在开发 延保服务 频道页时,为了提高查询效率,使用到了多线程技术。为了对多线程方案设计有更加充分的了解,在业余时间读完了《图解 Java 多线程设计...

2024-06-26 标签:JAVAAPI多线程 265 0

骁龙8s Gen 3:全方位升级的旗舰级平台

CPU 性能方面,第三代骁龙 8s 平台搭载高通 Kryo CPU,沿袭全新 CPU 架构,包括 1 个 3.0GHz 的超级内核、4 个 2.8GHz...

2024-03-18 标签:cpu多线程骁龙 2337 0

java实现多线程的几种方式

Java实现多线程的几种方式 多线程是指程序中包含了两个或以上的线程,每个线程都可以并行执行不同的任务或操作。Java中的多线程可以提高程序的效率和性能...

2024-03-14 标签:JAVA多线程线程池 567 0

你还是分不清多进程和多线程吗?一文搞懂!

你还是分不清多进程和多线程吗?一文搞懂! 多进程和多线程是并发编程中常见的两个概念,它们都可以用于提高程序的性能和效率。但是它们的实现方式和使用场景略有...

2023-12-19 标签:多线程多进程 533 0

龙芯3A6000处理器官宣定档11月28日

这表明在IPC性能方面,龙芯3A6000处理器超出了i3-10100F至少30%以上,差不多可以媲美13代酷睿处理器。

2023-11-23 标签:处理器cpu多线程 714 0

天玑7200和天玑1100哪个好?天玑7200和天玑8200哪个好?

天玑7200和天玑1100哪个好? 天玑7200好一些。联发科天玑 7200 采用第二代台积电 4 纳米工艺,与天玑 9200 系列相同。配备了两个峰值...

2023-10-16 标签:台积电多线程5G手机 1.9万 0

支付宝:多线程事务怎么回滚?

可以发现子线程组执行时,有一个线程执行失败,其他线程也会抛出异常,但是主线程中执行的删除操作,没有回滚,@Transactional注解没有生效。

2023-01-09 标签:多线程spring 1814 0

多线程的web目录扫描工具

$ python3 PmWebDirScan.py -u "baidu.com" -d "专业备份扫描.txt,综合目录....

2023-01-09 标签:Web多线程 1043 0

读懂HikariCP一百行代码,多线程就是个孙子!

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC ...

2022-12-14 标签:cpu数据库多线程 724 0

查看更多>>

多线程数据手册

相关标签

相关话题

换一批
  • IOT
    IOT
    +关注
    IoT是Internet of Things的缩写,字面翻译是“物体组成的因特网”,准确的翻译应该为“物联网”。物联网(Internet of Things)又称传感网,简要讲就是互联网从人向物的延伸。
  • 海思
    海思
    +关注
  • STM32F103C8T6
    STM32F103C8T6
    +关注
    STM32F103C8T6是一款集成电路,芯体尺寸为32位,程序存储器容量是64KB,需要电压2V~3.6V,工作温度为-40°C ~ 85°C。
  • 数字隔离
    数字隔离
    +关注
    数字隔离技术常用于工业网络环境的现场总线、军用电子系统和航空航天电子设备中,尤其是一些应用环境比较恶劣的场合。数字隔离电路主要用于数字信号和开关量信号的传输。另一个重要原因是保护器件(或人)免受高电压的危害。本文详细介绍了数字隔离器工作原理及特点,选型及应用,各类数字隔离器件性能比较等内容。
  • 硬件工程师
    硬件工程师
    +关注
    硬件工程师Hardware Engineer职位 要求熟悉计算机市场行情;制定计算机组装计划;能够选购组装需要的硬件设备,并能合理配置、安装计算机和外围设备;安装和配置计算机软件系统;保养硬件和外围设备;清晰描述出现的计算机软硬件故障。
  • wifi模块
    wifi模块
    +关注
    Wi-Fi模块又名串口Wi-Fi模块,属于物联网传输层,功能是将串口或TTL电平转为符合Wi-Fi无线网络通信标准的嵌入式模块,内置无线网络协议IEEE802.11b.g.n协议栈以及TCP/IP协议栈。传统的硬件设备嵌入Wi-Fi模块可以直接利用Wi-Fi联入互联网,是实现无线智能家居、M2M等物联网应用的重要组成部分。
  • 74ls74
    74ls74
    +关注
    74LS74是双D触发器。功能多,可作双稳态、寄存器、移位寄存器、振荡器、单稳态、分频计数器等功能。本章详细介绍了74ls112的功能及原理,74ls74引脚图及功能表,74ls112的应用等内容。
  • MPU6050
    MPU6050
    +关注
    MPU-6000(6050)为全球首例整合性6轴运动处理组件,相较于多组件方案,免除了组合陀螺仪与加速器时间轴之差的问题,减少了大量的封装空间。
  • UHD
    UHD
    +关注
    UHD是”超高清“的意思UHD的应用在电视机技术上最为普遍,目前已有不少厂商推出了UHD超高清电视。
  • Protues
    Protues
    +关注
    Proteus软件是英国Lab Center Electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
  • STC12C5A60S2
    STC12C5A60S2
    +关注
    在众多的51系列单片机中,要算国内STC 公司的1T增强系列更具有竞争力,因他不但和8051指令、管脚完全兼容,而且其片内的具有大容量程序存储器且是FLASH工艺的,如STC12C5A60S2单片机内部就自带高达60K FLASHROM,这种工艺的存储器用户可以用电的方式瞬间擦除、改写。
  • 循迹小车
    循迹小车
    +关注
    做单片机的工程师相比都堆循迹小车有所认识,它是自动引导机器人系统的基本应用,那么今天小编就给大家介绍下自动自动循迹小车的原理,智能循迹小车的应用,智能循迹小车程序,循迹小车用途等知识吧!
  • 光立方
    光立方
    +关注
    光立方是由四千多棵光艺高科技“发光树”组成的,在2009年10月1日天安门广场举行的国庆联欢晚会上面世。这是新中国成立六十周年国庆晚会最具创意的三大法宝之首。
  • K60
    K60
    +关注
  • LM2596
    LM2596
    +关注
    LM2596是降压型电源管理单片集成电路的开关电压调节器,能够输出3A的驱动电流,同时具有很好的线性和负载调节特性。固定输出版本有3.3V、5V、12V,可调版本可以输出小于37V的各种电压。
  • 光模块
    光模块
    +关注
    光模块(optical module)由光电子器件、功能电路和光接口等组成,光电子器件包括发射和接收两部分。简单的说,光模块的作用就是光电转换,发送端把电信号转换成光信号,通过光纤传送后,接收端再把光信号转换成电信号。
  • STM32单片机
    STM32单片机
    +关注
    STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核
  • 步进驱动器
    步进驱动器
    +关注
    步进驱动器是一种将电脉冲转化为角位移的执行机构。当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速和定位的目的。
  • Nexperia
    Nexperia
    +关注
    Nexperia是大批量生产基本半导体的领先专家,这些半导体是世界上每个电子设计都需要的组件。该公司广泛的产品组合包括二极管、双极晶体管、ESD 保护器件、MOSFET、GaN FET 以及模拟和逻辑IC。
  • CD4046
    CD4046
    +关注
    cD4046是通用的CMOS锁相环集成电路,其特点是电源电压范围宽(为3V-18V),输入阻抗高(约100MΩ),动态功耗小,在中心频率f0为10kHz下功耗仅为600μW,属微功耗器件。本章主要介绍内容有,CD4046的功能 cd4046锁相环电路,CD4046无线发射,cd4046运用,cd4046锁相环电路图。
  • COMSOL
    COMSOL
    +关注
    COMSOL集团是全球多物理场建模解决方案的提倡者与领导者。凭借创新的团队、协作的文化、前沿的技术、出色的产品,这家高科技工程软件公司正飞速发展,并有望成为行业领袖。其旗舰产品COMSOL Multiphysics 使工程师和科学家们可以通过模拟,赋予设计理念以生命。
  • 加速度传感器
    加速度传感器
    +关注
    加速度传感器是一种能够测量加速度的传感器。通常由质量块、阻尼器、弹性元件、敏感元件和适调电路等部分组成。
  • 联网技术
    联网技术
    +关注
  • 服务机器人
    服务机器人
    +关注
    服务机器人是机器人家族中的一个年轻成员,到目前为止尚没有一个严格的定义。不同国家对服务机器人的认识不同。
  • 四轴飞行器
    四轴飞行器
    +关注
    四轴飞行器,又称四旋翼飞行器、四旋翼直升机,简称四轴、四旋翼。这四轴飞行器(Quadrotor)是一种多旋翼飞行器。四轴飞行器的四个螺旋桨都是电机直连的简单机构,十字形的布局允许飞行器通过改变电机转速获得旋转机身的力,从而调整自身姿态。具体的技术细节在“基本运动原理”中讲述。
  • 基站测试
    基站测试
    +关注
    802.11ac与11基站测试(base station tests) 在基站设备安装完毕后,对基站设备电气性能所进行的测量。n的区别,802.11n无线网卡驱动,802.11n怎么安装。
  • TMS320F28335
    TMS320F28335
    +关注
    TMS320F28335是一款TI高性能TMS320C28x系列32位浮点DSP处理器
  • 静电防护
    静电防护
    +关注
    为防止静电积累所引起的人身电击、火灾和爆炸、电子器件失效和损坏,以及对生产的不良影响而采取的防范措施。其防范原则主要是抑制静电的产生,加速静电泄漏,进行静电中和等。
  • OBD
    OBD
    +关注
    OBD是英文On-Board Diagnostic的缩写,中文翻译为“车载诊断系统”。这个系统随时监控发动机的运行状况和尾气后处理系统的工作状态,一旦发现有可能引起排放超标的情况,会马上发出警示。
  • SDK
    SDK
    +关注
      SDK一般指软件开发工具包,软件开发工具包一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。软件开发工具广义上指辅助开发某一类软件的相关文档、范例和工具的集合。

关注此标签的用户(0人)

编辑推荐厂商产品技术软件/工具OS/语言教程专题