当前位置:网站首页>多线程是同时执行多个线程的吗
多线程是同时执行多个线程的吗
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是可以同时执行多个线程。
边栏推荐
- Sun Zhengyi lost 150 billion: it was expensive at the beginning
- 异常处理(try,catch,finally)
- HUAWEI CLOUD escorts the whole process of "Wandering Ark" for the first time, creating a popular brand
- leetcode:320.列举单词的全部缩写
- 月薪5K的运维小白如何成为月薪5W的高级架构师?
- Analyze the Add() method in Fragment management from the source code
- Leetcode 236. 二叉树的最近公共祖先
- 【Burning】It's time to show your true strength!Understand the technical highlights of the 2022 Huawei Developer Competition in one article
- 对象深复制,面试题
- 【服务器数据恢复】SAN LUN映射出错导致文件系统数据丢失的数据恢复案例
猜你喜欢
随机推荐
R语言ggstatsplot包grouped_ggscatterstats函数可视化分组散点图、并添加假设检验结果(包含样本数、统计量、效应大小及其置信区间、显著性、组间两两比较、贝叶斯假设)
leetcode:323. 无向图中连通分量的数目
干涉BGP的选路---社团属性
YGG 经理人杯总决赛已圆满结束,来看看这份文字版总结!
xctf攻防世界 Web高手进阶区 ics-05
集群的基础形式
迅为瑞芯微RK3399开发板设置Buildroot文件系统测试MYSQL允许远程访问
Postgresql源码(68)virtualxid锁的原理和应用场景
五分钟商学院(基础---商业篇)
R语言检验时间序列的平稳性:使用tseries包的adf.test函数实现增强的Dickey-Fuller(ADF)检验、检验时序数据是否具有均值回归特性(平稳性)、不具有均值回归特性的案例
leetcode:286.墙和门
【Leetcode】2104. Sum of Subarray Ranges
mysql中的key是怎么用的,或者这个值有什么意义,如下图?
【软考 系统架构设计师】案例分析④ 软件架构风格
【技术分享】SLA(服务等级协议)原理与配置
Kubernetes Service对象
torch.distributed多卡/多GPU/分布式DPP(二)——torch.distributed.all_reduce(reduce_mean)&barrier&控制进程执行顺序&随机数种子
关于ETL的两种架构(ETL架构和ELT架构)
Analyze the Add() method in Fragment management from the source code
leetcode:332. 重新安排行程