前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >图解并发与并行-分别从CPU和线程的角度理解

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

作者头像
字母哥博客
发布2020-09-23 16:00:20
5070
发布2020-09-23 16:00:20
举报

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

一、CPU角度的并发与并行

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

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

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

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

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

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

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

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

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

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

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

喜欢 (0)or分享 (0)

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、CPU角度的并发与并行
  • 二、线程角度的并发与并行
相关产品与服务
GPU 云服务器
GPU 云服务器(Cloud GPU Service,GPU)是提供 GPU 算力的弹性计算服务,具有超强的并行计算能力,作为 IaaS 层的尖兵利器,服务于深度学习训练、科学计算、图形图像处理、视频编解码等场景。腾讯云随时提供触手可得的算力,有效缓解您的计算压力,提升业务效率与竞争力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档