当前位置:网站首页>多线程是同时执行多个线程的吗
多线程是同时执行多个线程的吗
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是可以同时执行多个线程。
边栏推荐
- 【LaTex】 Font “FandolSong-Regular“ does not contain requested(fontspec)Script “CJK“.如何抑制此种警告?
- ArrayList 和 LinkedList 区别
- 集合运算样例
- 数字与中文大写数字互转(5千万亿亿亿亿以上的数字也支持转换)
- Linux 配置MySQL
- Swift 需求 如何防止把view重复添加到win里面
- 使用股票量化交易接口需要具备怎么样的心态
- 【Apifox】为什么如此受青睐,此篇文章和大家分享
- 少儿编程 电子学会图形化编程等级考试Scratch三级真题解析(判断题)2022年6月
- leetcode:331. 验证二叉树的前序序列化
猜你喜欢
随机推荐
OSG笔记:使用setFontResolution设置字体分辨率
Transfer Learning & Kemin Initialization
如何坚持使用程序化系统?
A. Common Prefixes
Core Data浅谈系列之五 : 在UITableView中展示
leetcode:319. 灯泡开关
Leetcode 235. 二叉搜索树的最近公共祖先
2022-8-9 第六组 输入输出流
shell数组
Janus Official DEMO Introduction
Socket发送缓冲区接收缓冲区快问快答
33. Fabric通道、组织、节点、权限间关系
C 在函数声明前加typedef
APS系统能消除造成生产和运输延迟的瓶颈
PyQt5:入门使用教程
PyQt5: Getting Started Tutorial
UNI-APP_ monitor page scroll h5 monitor page scroll
OSS文件上传
typedef和#define的花里胡哨的用法
Postgresql源码(68)virtualxid锁的原理和应用场景









