当前位置:网站首页>多线程是同时执行多个线程的吗
多线程是同时执行多个线程的吗
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是可以同时执行多个线程。
边栏推荐
猜你喜欢
随机推荐
JS--popstate事件--使用/教程/实例
Install win7 virtual machine in Vmware and related simple knowledge
OSS文件上传
charts.js插件实现的散点图样式
leetcode:321. 拼接最大数
A. Common Prefixes
Linux 配置MySQL
异常处理(try,catch,finally)
月薪5K的运维小白如何成为月薪5W的高级架构师?
Good future, want to be a second new Oriental
leetcode:332. 重新安排行程
leetcode:323. 无向图中连通分量的数目
请讲一讲JS中的 for...in 与 for...of (上)
YGG 经理人杯总决赛已圆满结束,来看看这份文字版总结!
Redis集群
typedef和#define的花里胡哨的用法
setter与getter访问器属性——数据驱动显示
What is the stability of the quantitative trading interface system?
CGLIB源码易懂解析
The 2022-8-9 sixth group of input and output streams