本文翻译自:https://medium.com/swift-india/concurrency-parallelism-threads-processes-async-and-sync-related-39fd951bc61d

最近,我的一个朋友问我关于并发和并行性的问题。当我开始向他解释他查询到的答案时,我们开始讨论其他相关概念和术语,例如线程->多线程和单线程,异步和同步。在某一点上,我们对以下查询感到困惑:

  • 并发与并行性有何关系?

  • 什么是同步和异步执行?

  • 同步和异步编程在并发和并行性中的重要性是什么?

  • 线程如何与所有这些概念一起使用?

我们有时也会对这些概念感到困惑。尝试通过查询回答以上问题,并亲自写demo试验。

因此,让我们检查一下您是否掌握正确。我们将分析并了解它们实际上是什么以及它们之间的关系。

一、并发和并行

并发

思考给同时你一个唱歌和进食的任务,在给定的时间情况下,您会唱歌或吃饭,因为这两种情况都涉及您的嘴巴。因此,要执行此操作,您需要先吃一段时间,然后唱歌并重复此操作,直到食物吃完或歌曲结束为止。因此,您可以同时执行任务。

在计算机科学领域,在各种处理器中实现并发的方式不同。在单核环境(即您的处理器具有单核)中,并发是通过称为上下文切换的过程实现的。如果是多核环境,则可以通过并行实现并发。

在单个核心环境中执行任务。任务在上下文之间切换。

并行

考虑给您做两个烹饪任务,并通过电话与您的朋友交谈。您可以同时执行这两件事。您既可以做饭,也可以通过电话讲话。现在,您正在并行执行任务。

并行是指同时执行两个或多个任务。计算机科学中的并行计算是指同时执行多个计算的过程。

在同一时间段内同时执行两个任务。

那么并发和并行的关系是什么呢?

  • 并发和并行是指专注于如何执行任务或计算的计算机体系结构。

  • 在单个核心环境中,并发发生于通过上下文切换在相同时间段内执行的任务,即在特定时间段内,仅单个任务被执行。

  • 在多核环境中,并发可以通过并行执行多个任务同时执行来实现

二、线程和进程

线程

操作系统调度的最小单位,程序可以是单线程或多线程。线程是可以相互独立执行的一系列代码执行序列。

进程

资源分配的最小单位,一个程序可以有多个进程。进程通常从单个线程(即主线程)开始,但随后在执行过程中它可以创建多个线程。

应用程序中进程和线程的分布。

三、同步和异步

同步

想象一下你同时写两封信一封给妈妈一封给你最好的朋友,你不能同时写两个字母除非你是专业的人士。

在同步编程模型中,任务一个接一个地执行。每个任务等待任何先前的任务完成,然后执行。

异步

想象你做一个三明治,然后用洗衣机洗衣服。您可以将衣服放在洗衣机中,而无需等待做完,您可以去做三明治。在这里,您异步执行了这两个任务。

在异步编程模型中,当一个任务被执行时,您可以切换到其他任务,而无需等待前一个任务完成。

同步--单线程

同步--多线程

异步--单线程

异步--多线程

同步和异步在并发和并行中的作用是什么

  • 异步编程模型可以帮助我们实现并发。

  • 多线程环境中的异步编程模型是一种实现并行性的方法。

总结

并发和并行

执行任务的方式。

同步和异步

编程模型。

单线程和多线程

任务执行的环境。

多线程是并行还是并发_并发,并行,线程,进程,异步和同步有相关性吗?相关推荐

  1. java并行安全吗_并发和并行有什么区别

    并发(concurrency)和并行(parallellism) 并发:是指同一个时间段内多个任务同时都在执行,并且都没有执行结束.并发任务强调在一个时间段内同时执行,而一个时间段由多个单位时间累积而 ...

  2. Java多线程基础学习,Thread解读、java线程的状态、同步和异步、两阶段终止模式

    理论概述 单线程和多线程 为什么要使用多线程呢?多线程有什么好处呢? 如果在程序中,需要读写一个文件,该文件很大,那我们执行到该io操作时,cpu就会等待该io操作执行完才会继续运行下面的代码,进程调 ...

  3. java 并行与并发_并发与并行的区别是什么?

    详细请参考:Concurrency vs. Parallelism​tutorials.jenkov.com [Concurrency] 并发的反义词是顺序,concurrency vs sequen ...

  4. java 防并发_并发:如何防止两个不同类中的两个方法同时运行?

    我有一个用例,我必须防止两个不同的类中的两个不同的方法同时运行,即如果类A有方法X而类B有方法Y,我必须确保当methodX被执行时,我在methodX完成之前,不应允许方法Y执行或阻止执行 . cl ...

  5. sql server 并发_并发问题– SQL Server中的理论和实验

    sql server 并发 介绍 (Introduction) Intended audience 目标听众 This document is intended for application dev ...

  6. mfc 弹簧_弹簧和线程:异步

    mfc 弹簧 以前,我们开始使用spring和TaskExecutor ,因此我们对如何在spring应用程序中使用线程更加熟悉. 但是,使用任务执行程序可能比较麻烦,尤其是当我们需要执行简单的操作时 ...

  7. python 线程通信的几种方式_进程间通信和线程间通信的几种方式

    进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基本执行实体:在当代 ...

  8. 并发和并行的区别_多核、多处理器、并发、并行、超线程概念总结

    多核与多处理器 多核( ) 多核处理器就是指单个 CPU 中有多个可执行单元. 如下图所示,单个 CPU 中有两套可执行单元. 多处理器( ) 多处理器系统则是一个拥有多个 CPU 的系统.每个 CP ...

  9. 并发 线程交替执行_并发与并行的区别

    简要可以理解为: (1)并行是指两个或者多个事件在同一时刻发生:而并发是指两个或多个事件在同一时间间隔发生. (2)并行是在不同实体上的多个事件,并发是在同一实体上的多个事件. (3)在一台处理器上& ...

最新文章

  1. 赛灵思FPGA中的主要时钟资源介绍
  2. Jquery Mobile转场特效之slide | 小小iPhone开发
  3. CSS中通过import方式导入的方法
  4. 【Python面试】 列举Python中的标准异常类?
  5. “2019大数据与实体经济深度融合全国行”盛大启动
  6. 哪本书是对程序员最有影响(stackoverflow)
  7. 社群商业模式设计方案
  8. 解决内网用户不能正常访问内部WEB服务器问题
  9. 深入理解Python中的yield和send
  10. Bootstrap 模态框(Modal)插件
  11. JavaScript parseInt() toString()函数
  12. 网络安全系统性学习路线「全文字详细介绍」
  13. DNS服务器设置正确,DNS服务器配置(DNS各属性详细介绍)
  14. matlab绘制离散信号结论,实验二 离散时间信号的表示及运算
  15. BatchConfigTool批量配置工具
  16. BJFU_数据结构习题_274六度空间理论
  17. uni-app -- 小程序添加激励视频(字节-抖音小程序)
  18. 一些不错的酷站欣赏的网站
  19. 【实验分享】备份IOS文件
  20. 高中物理应用计算机教学心得,高中物理教学心得

热门文章

  1. 2019级软件1班安卓实训总结
  2. Python学习笔记:目录与文件操作
  3. 安卓案例:利用定时器实现逐帧动画
  4. 6.边缘检测:梯度——边缘检测、导数与边缘、什么是梯度_2
  5. 大学物理上册详细笔记_干货满满!快来pick自哈军工以来的学霸笔记!
  6. 【英语学习】【English L06】U04 Adventure L4 I got lost in New York
  7. 【OpenStack】【Nova】安装与配置详解 (1)
  8. 简述osi参考模型各层主要功能_OSI参考模型各层主要功能
  9. python 贴吧自动发帖_python接口自动化3-自动发帖(session)
  10. iphone彻底删除照片如何恢复_苹果手机删除的照片如何恢复