当前位置:网站首页>多线程是同时执行多个线程的吗
多线程是同时执行多个线程的吗
2022-08-09 22:09:00 【余生大大】
相信多线程各位大佬都用过,不管是在单核cpu还是多核cpu上都可以执行,但是多线程是同时执行多个线程的吗?
并发和并行:
并发:
解释1:当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间 段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状。.这种方式我们称之为并发(Concurrent)。
解释2:对于单核cpu来说,多线程并不是同时进行的,操作系统将时间分成了多个时间片,大概均匀的分配给线程,到达某个线程的时间段,该线程运行,其余时间待命,这样从微观上看,一个线程是走走停停的,宏观感官上,在某一时刻似乎所有线程都在运行。并发是针对时间片段来说的,在某个时间段内多个线程处于runnable到running之间,但每个时刻只有一个线程在running,这叫做并发。(系统不断地在各个线程之间来回的切换,因为系统切换的速度非常的快,所以给我们在同时运行的错觉)
并行:当系统有一个以上CPU时,则线程的操作有可能非并发。当一个CPU执行一个线程时,另一个CPU可以执行另一个线程,两个线程互不抢占CPU资源,可以同时进行,这种方式我们称之为并行(Parallel)。
区别:并发和并行是即相似又有区别的两个概念,并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔内发生。在多道程序环境下,并发性是指在一段时间内宏观上有多个程序在同时运行,但在单处理机系统中,每一时刻却仅能有一道程序执行,故微观上这些程序只能是分时地交替执行。倘若在计算机系统中有多个处理机,则这些可以并发执行的程序便可被分配到多个处理机上,实现并行执行,即利用每个处理机来处理一个可并发执行的程序,这样,多个程序便可以同时执行。
结论:
单核cpu是系统将时间分割成时间段交由不同的线程执行,所以实际单核cpu同一时间是只存在一个线程的。
多核cpu可以理解为多个单核cpu,一个cpu执行一个线程,其他cpu也可以执行其他线程,所以多核cpu是可以同时执行多个线程。
边栏推荐
- 用PLSQL导出Oracle一个表
- 【Burning】It's time to show your true strength!Understand the technical highlights of the 2022 Huawei Developer Competition in one article
- 用户要清晰知道,量化交易并非简单的程序
- 2022-8-9 第六组 输入输出流
- 信息系统项目管理师---第十一章项目风险管理历年考题
- 第 1 章 一大波数正在靠近——排序
- What are the basic steps to develop a quantitative trading strategy?
- Kubernetes Service对象
- 生成NC文件时,报错“未定义机床”
- CV复习:softmax代码实现
猜你喜欢

leetcode:319. 灯泡开关

The 2022-8-9 sixth group of input and output streams

Redis集群

华为鸿蒙3.0的野望:技术、应用、生态

(转)FreeType字体位图属性

“我“是一名测试/开发程序员,小孙的内心独白......

Qt 消息机制和事件

HUAWEI CLOUD escorts the whole process of "Wandering Ark" for the first time, creating a popular brand

Arcgis工具箱无法使用,显示“XML包含错误“的解决方法

leetcode:323. 无向图中连通分量的数目
随机推荐
关于ETL的两种架构(ETL架构和ELT架构)
学习编程的第十二天
C 在函数声明前加typedef
leetcode 39. 组合总和(完全背包问题)
Chapter 15 HMM模型
pip 离线到内网安装包
Leetcode 530. 二叉搜索树的最小绝对差
p5.js实现的炫酷星体旋转动画
【微信小程序开发(八)】音频背景音乐播放问题汇总
What kind of mentality do you need to have when using the stock quantitative trading interface
Vmware中安装win7虚拟机以及相关简单知识
APS系统能消除造成生产和运输延迟的瓶颈
R语言ggstatsplot包grouped_ggscatterstats函数可视化分组散点图、并添加假设检验结果(包含样本数、统计量、效应大小及其置信区间、显著性、组间两两比较、贝叶斯假设)
How to insist to use procedural system?
如何坚持使用程序化系统?
R语言拟合ARIMA模型并使用拟合模型进行预测推理:使用forecast函数计算ARIMA模型未来值(包含时间点、预测值、两个置信区间)
Janus官方DEMO介绍
typedef和#define的花里胡哨的用法
干涉BGP的选路---社团属性
【技术分享】SLA(服务等级协议)原理与配置