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

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

3天内不再提示

标签 > 多线程

多线程

+关注 0人关注

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

文章: 201
视频: 66
浏览: 20067
帖子: 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 为多核的情况下,多线程在性能上不如多进程。

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

查看详情

多线程知识

展开查看更多

多线程技术

多线程好还是单线程好?单线程和多线程的区别 优缺点分析

摘要:如今单线程与多线程已经得到普遍运用,那么到底多线程好还是单线程好呢?单线程和多线程的区别又是什么呢?下面我们来看看它们的区别以及优缺点分析。

2017-12-08 标签:多线程单线程 8.2万 0

AMD Ryzen 7 4800U参数测评及与Intel i7 10710U对比

在Cinebench R15多线程测试中,Ryzen 7 4800U比Intel的Core i7-9700K更快。这是一个15W的芯片(cTDP高达25...

2020-09-28 标签:amdcpu多线程 7.7万 0

单片机中如何实现多线程

整个项目需要控制16台步进电机,21个电磁阀,3个泵,1个直流电机,系统要求全部执行时间为6秒钟,系统要求步进电机以其最快的速度-----40us—60...

2018-11-08 标签:单片机多线程 2.1万 0

什么是多线程编程?多线程编程基础知识

摘要:多线程编程是现代软件技术中很重要的一个环节。要弄懂多线程,这就要牵涉到多进程。本文主要以多线程编程以及多线程编程相关知识而做出的一些结论。

2017-12-08 标签:编程多线程 1.3万 0

LabVIEW多线程编程解析 LabVIEW的VI优先级和并行循环等相关知识

LabVIEW多线程编程解析 LabVIEW的VI优先级和并行循环等相关知识

软件开发过程中总会遇到需要多线程同步运行的情况,尤其是一些复杂的测试系统和大型项目,仅靠单线程运行的程序是远远无法满足用户需求的,甚至可以说在复杂测试系...

2023-11-10 标签:labviewVi程序 1.2万 0

影响CPU性能的几大关键因素

手机CPU构架主要是基于ARM(高级精简指令集机器Advanced RISC Machines)架构设计,而ARM用精简指令系统(RISC),设计思想减...

2023-01-29 标签:cpu多线程 7637 0

多线程服务器编程模型:如何正确使用mutex 和condition variable

多线程服务器编程模型:如何正确使用mutex 和condition variable

本文对多线程服务器的常用编程模型进行了一个详细的解读,本文中的多线程服务器是运行在 Linux 操作系统上网络应用程序。介绍了典型的单线程服务器编程模型...

2018-02-19 标签:服务器多线程线程 7340 0

LabVIEW多线程编程数据传递教程

LabVIEW多线程编程数据传递教程

很多时候在一个VI的不同线程或者不同VI的不同线程中需要有一些交互——这些线程并不能完全独立运行,需要一定的数据通信才能正确执行,这时就需要在编程时使用...

2023-11-24 标签:labview编程多线程 7288 0

从I/O的阻塞与非阻塞、I/O处理的单线程与多线程角度探讨服务器模型

这里探讨的服务器模型主要指的是服务器端对I/O的处理模型。从不同维度可以有不同的分类,这里从I/O的阻塞与非阻塞、I/O处理的单线程与多线程角度探讨服务器模型。

2018-01-08 标签:服务器多线程阻塞 7044 0

基于STM32的虚拟多线程(TI_BLE协议栈_ZStack协议栈)

基于STM32的虚拟多线程(TI_BLE协议栈_ZStack协议栈)

基于STM32的虚拟多线程,可以很好的用于裸机程序中,用于模拟小型操作系统的多线程概念。本实例参考了参考TI_BLE协议栈_ZStack协议栈。

2018-06-14 标签:stm32多线程 6961 0

查看更多>>

多线程资讯

Motrix是一款开源免费且界面非常清爽简约的全能型下载软件

Motrix 默认开放了 Aria 2 的 JSON-RPC 支持,可以兼容所有支持 Aria2 的扩展插件或工具。默认的 RPC 端口为 16800,...

2019-03-28 标签:开源多线程下载器 2.6万 0

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

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

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

stm32多线程 单片机如何实现多线程

STM 32系列是专门应用在高性能、低成本、低功耗的嵌入式应用设计的ARM Corte-M0,M0+,M3,M4和M7内核,是主流的嵌入式单片机之一。

2021-07-22 标签:单片机STM32多线程 1.9万 0

线程和进程的关系与区别

线程是CPU调度的最小单位(程序执行流的最小单元),它被包含在进程之中,是进程中的实际运作单元。一条线程是进程中一个单一顺序的控制流,一个进程中可以并发...

2020-11-29 标签:cpu多线程数据结构 1.4万 0

如何正确关闭线程池

前言本章分为两个议题 如何正确关闭线程池 shutdown 和 shutdownNow 的区别 项目环境jdk 1.8 github 地址:https:...

2021-09-29 标签:模块多线程 9997 0

重大性能更新:Wasm 后端将利用 SIMD指令和 XNNPACK多线程

重大性能更新:Wasm 后端将利用 SIMD指令和 XNNPACK多线程

3 月,我们为 TensorFlow.js 推出了一个新的 WebAssembly(Wasm) 加速后端(继续阅读以进一步了解 Wasm 及其重要性)。...

2020-09-30 标签:多线程SIMD 9812 0

多核CPU、多进程、多线程之间的联系解析

多核CPU、多进程、多线程之间的联系解析

多核心cpu主要分原生多核和封装多核。Windows 应用程序中消息有两种送出途径;直接和排队。Windows或某些运行的应用程序可直接发布消息给窗口过...

2017-12-01 标签:多线程多核cpu多进程 9442 0

RTOS多线程访问同一硬件(如UART)的方法

RTOS多线程(任务)访问同一硬件(如UART)的方法

2020-03-12 标签:uart多线程RTOS 5517 1

python创建多线程的两种方法

1. 用函数创建多线程 在Python3中,Python提供了一个内置模块 threading.Thread ,可以很方便地让我们创建多线程。 thre...

2022-03-15 标签:多线程python 5346 0

LabVIEW是自动多线程语言

  一般情况下,运行一个 VI,LabVIEW 至少会在两个线程内运行它:一个界面线程(UI Thread),用于处理界面刷新,用户对控件的操作等等;还...

2012-03-27 标签:LabVIEW多线程 5284 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等物联网应用的重要组成部分。
  • MPU6050
    MPU6050
    +关注
    MPU-6000(6050)为全球首例整合性6轴运动处理组件,相较于多组件方案,免除了组合陀螺仪与加速器时间轴之差的问题,减少了大量的封装空间。
  • 74ls74
    74ls74
    +关注
    74LS74是双D触发器。功能多,可作双稳态、寄存器、移位寄存器、振荡器、单稳态、分频计数器等功能。本章详细介绍了74ls112的功能及原理,74ls74引脚图及功能表,74ls112的应用等内容。
  • Protues
    Protues
    +关注
    Proteus软件是英国Lab Center Electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
  • UHD
    UHD
    +关注
    UHD是”超高清“的意思UHD的应用在电视机技术上最为普遍,目前已有不少厂商推出了UHD超高清电视。
  • 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处理器
  • 静电防护
    静电防护
    +关注
    为防止静电积累所引起的人身电击、火灾和爆炸、电子器件失效和损坏,以及对生产的不良影响而采取的防范措施。其防范原则主要是抑制静电的产生,加速静电泄漏,进行静电中和等。
  • SDK
    SDK
    +关注
      SDK一般指软件开发工具包,软件开发工具包一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。软件开发工具广义上指辅助开发某一类软件的相关文档、范例和工具的集合。
  • OBD
    OBD
    +关注
    OBD是英文On-Board Diagnostic的缩写,中文翻译为“车载诊断系统”。这个系统随时监控发动机的运行状况和尾气后处理系统的工作状态,一旦发现有可能引起排放超标的情况,会马上发出警示。

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

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