美文网首页
图解并发与并行-分别从CPU和线程的角度理解

图解并发与并行-分别从CPU和线程的角度理解

作者: 字母哥课堂 | 来源:发表于2020-09-23 07:10 被阅读0次

本文作为图解java并发编程的第三篇,前2篇访问地址如下所示:

一、CPU角度的并发与并行

并发
曾经我作为一个不是很爱学习的孩子,在上学的时候经常做这样的事情:在数学课上补物理作业,数学课听懂了,物理作业也上交了。不谦虚的说,我是具备这样的能力,但很可惜没用对地方。

很多同学说:“你是不是有多个大脑?”,肯定不是啊,其实这是一种切换的能力。当你同时做多件事情,并且能够快速切换的时候。在别人开来,你就有了并发的能力,但是你的大脑还是一个大脑。

我们的计算机在绝大部分时间都运行很多很多的进程与线程,所以CPU并发执行并切换分配CPU时间片资源是一种常态。只是CPU的执行速度实在是太快了,快到绝大部分情况下你都无法感知“执行线程的切换”。所以看上去它在一边播放音乐,一边运行浏览器,一边运行其他软件。

并行
知道了计算机中并发的概念,我们来举例了解一下并行的概念。

  • 你在餐厅点餐,点餐后等餐的同时你在读书。看上去你是在做两件事,等餐和读书。实际上只有一件事是需要你实际操作的,那就是读书;另外一件事实际上是做菜,做菜是由餐厅的厨师进行的。

随着计算机多核CPU的普及,计算机也在一定程度上具备了并行计算的能力。那这么说,单核心的CPU就一定不存在并行能力喽?也并非完全如此,若单核心的CPU拥有Hyper-threading技术,那么单核心可以并行的运行两个逻辑线程。

二、线程角度的并发与并行

上面的并发与并行的解释更多的是从CPU运行的角度,但作为程序员更关心的是作为开发者如何区分并发与并行。

从线程的角度去谈并行,通常是指在多线程间不存在数据共享或通信,能够利用CPU的并行能力去运行多线程。


从线程的角度去谈并发,通常是指多个线程之间存在资源共享(内存、代码段等),彼此协调共享资源的使用,从而交出或获得CPU执行时间片的使用权。


总结一句话,希望对你与理解并发与并行有帮助,并发是看上去的并行,实际上的资源切换,并发目的是将资源利用能力最大化、最优化。

欢迎关注我的博客,里面有很多精品合集

  • 本文转载注明出处(必须带连接,不能只转文字):字母哥博客

觉得对您有帮助的话,帮我点赞、分享!您的支持是我不竭的创作动力! 。另外,笔者最近一段时间输出了如下的精品内容,期待您的关注。

相关文章

  • 图解并发与并行-分别从CPU和线程的角度理解

    本文作为图解java并发编程的第三篇,前2篇访问地址如下所示: 图解进程线程、互斥锁与信号量-看完还不懂你来打我 ...

  • 2018-05-18java多线程

    并行与并发的区别 并行:多个线程同时进行,要依赖多个cpu实现,并发:cpu在线程之间切换,宏观上实现并行 1.线...

  • go 的并发机制

    并发与并行的概念 ① 多线程程序在单核cpu上运行就是并发;② 多线程程序在多核cpu上运行就是并行; gorou...

  • java多线程-1-并发编程

    并行与并发 并发两个队伍排一个咖啡机单cpu,多线程 并行两个队伍排两个咖啡机多cpu,多线程 进程与线程 进程间...

  • android 多线程(二)

    线程并发与并行 1.并发:当多线程共同使用一个CPU或只有一个CPU可用的时候,这个CPU同一时刻只能执行一个线程...

  • know un known

    1 线程安全与不安全的区别 2 并发与并行,c#的高并发解决方案有哪些 3 并发还分为io并发和cpu并发 4 长...

  • 同步、异步、阻塞、非阻塞、并行、并发

    并行、并发 并行和并发比较好理解 并发:是指一段时间内,有几个线程都在同一个CPU上运行,但任意一个时刻点上只有一...

  • 多线程理论基础

    几个基础问题 cpu 核心和线程数 以前 现在 CPU 轮转机制 并发和并行 Java 默认就是多线程的 如何控制...

  • Java多线程知识点汇总

    Java 多线程 多线程:指的是这个程序(一个进程)运行时产生了不止一个线程 并行与并发:并行:多个cpu实例或者...

  • golang笔记—— 进程\线程\协程\Goroutine

    一、并发与并行 1. 并发 并发(Concurrent):1个CPU交错执行2个任务。单核系统中,进程(或线程)通...

网友评论

      本文标题:图解并发与并行-分别从CPU和线程的角度理解

      本文链接:https://www.haomeiwen.com/subject/bxrnyktx.html