多线程是并行还是并发_并发,并行,线程,进程,异步和同步有相关性吗?
本文翻译自:https://medium.com/swift-india/concurrency-parallelism-threads-processes-async-and-sync-related-39fd951bc61d
最近,我的一个朋友问我关于并发和并行性的问题。当我开始向他解释他查询到的答案时,我们开始讨论其他相关概念和术语,例如线程->多线程和单线程,异步和同步。在某一点上,我们对以下查询感到困惑:
并发与并行性有何关系?
什么是同步和异步执行?
同步和异步编程在并发和并行性中的重要性是什么?
线程如何与所有这些概念一起使用?
我们有时也会对这些概念感到困惑。尝试通过查询回答以上问题,并亲自写demo试验。
因此,让我们检查一下您是否掌握正确。我们将分析并了解它们实际上是什么以及它们之间的关系。
一、并发和并行
并发
思考给同时你一个唱歌和进食的任务,在给定的时间情况下,您会唱歌或吃饭,因为这两种情况都涉及您的嘴巴。因此,要执行此操作,您需要先吃一段时间,然后唱歌并重复此操作,直到食物吃完或歌曲结束为止。因此,您可以同时执行任务。
在计算机科学领域,在各种处理器中实现并发的方式不同。在单核环境(即您的处理器具有单核)中,并发是通过称为上下文切换的过程实现的。如果是多核环境,则可以通过并行实现并发。
在单个核心环境中执行任务。任务在上下文之间切换。
并行
考虑给您做两个烹饪任务,并通过电话与您的朋友交谈。您可以同时执行这两件事。您既可以做饭,也可以通过电话讲话。现在,您正在并行执行任务。
并行是指同时执行两个或多个任务。计算机科学中的并行计算是指同时执行多个计算的过程。
在同一时间段内同时执行两个任务。
那么并发和并行的关系是什么呢?
并发和并行是指专注于如何执行任务或计算的计算机体系结构。
在单个核心环境中,并发发生于通过上下文切换在相同时间段内执行的任务,即在特定时间段内,仅单个任务被执行。
在多核环境中,并发可以通过并行执行多个任务同时执行来实现。
二、线程和进程
线程
操作系统调度的最小单位,程序可以是单线程或多线程。线程是可以相互独立执行的一系列代码执行序列。
进程
资源分配的最小单位,一个程序可以有多个进程。进程通常从单个线程(即主线程)开始,但随后在执行过程中它可以创建多个线程。
应用程序中进程和线程的分布。
三、同步和异步
同步
想象一下你同时写两封信一封给妈妈一封给你最好的朋友,你不能同时写两个字母除非你是专业的人士。
在同步编程模型中,任务一个接一个地执行。每个任务等待任何先前的任务完成,然后执行。
异步
想象你做一个三明治,然后用洗衣机洗衣服。您可以将衣服放在洗衣机中,而无需等待做完,您可以去做三明治。在这里,您异步执行了这两个任务。
在异步编程模型中,当一个任务被执行时,您可以切换到其他任务,而无需等待前一个任务完成。
同步--单线程
同步--多线程
异步--单线程
异步--多线程
同步和异步在并发和并行中的作用是什么?
异步编程模型可以帮助我们实现并发。
多线程环境中的异步编程模型是一种实现并行性的方法。
总结
并发和并行
执行任务的方式。
同步和异步
编程模型。
单线程和多线程
任务执行的环境。
多线程是并行还是并发_并发,并行,线程,进程,异步和同步有相关性吗?相关推荐
- java并行安全吗_并发和并行有什么区别
并发(concurrency)和并行(parallellism) 并发:是指同一个时间段内多个任务同时都在执行,并且都没有执行结束.并发任务强调在一个时间段内同时执行,而一个时间段由多个单位时间累积而 ...
- Java多线程基础学习,Thread解读、java线程的状态、同步和异步、两阶段终止模式
理论概述 单线程和多线程 为什么要使用多线程呢?多线程有什么好处呢? 如果在程序中,需要读写一个文件,该文件很大,那我们执行到该io操作时,cpu就会等待该io操作执行完才会继续运行下面的代码,进程调 ...
- java 并行与并发_并发与并行的区别是什么?
详细请参考:Concurrency vs. Parallelismtutorials.jenkov.com [Concurrency] 并发的反义词是顺序,concurrency vs sequen ...
- java 防并发_并发:如何防止两个不同类中的两个方法同时运行?
我有一个用例,我必须防止两个不同的类中的两个不同的方法同时运行,即如果类A有方法X而类B有方法Y,我必须确保当methodX被执行时,我在methodX完成之前,不应允许方法Y执行或阻止执行 . cl ...
- sql server 并发_并发问题– SQL Server中的理论和实验
sql server 并发 介绍 (Introduction) Intended audience 目标听众 This document is intended for application dev ...
- mfc 弹簧_弹簧和线程:异步
mfc 弹簧 以前,我们开始使用spring和TaskExecutor ,因此我们对如何在spring应用程序中使用线程更加熟悉. 但是,使用任务执行程序可能比较麻烦,尤其是当我们需要执行简单的操作时 ...
- python 线程通信的几种方式_进程间通信和线程间通信的几种方式
进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基本执行实体:在当代 ...
- 并发和并行的区别_多核、多处理器、并发、并行、超线程概念总结
多核与多处理器 多核( ) 多核处理器就是指单个 CPU 中有多个可执行单元. 如下图所示,单个 CPU 中有两套可执行单元. 多处理器( ) 多处理器系统则是一个拥有多个 CPU 的系统.每个 CP ...
- 并发 线程交替执行_并发与并行的区别
简要可以理解为: (1)并行是指两个或者多个事件在同一时刻发生:而并发是指两个或多个事件在同一时间间隔发生. (2)并行是在不同实体上的多个事件,并发是在同一实体上的多个事件. (3)在一台处理器上& ...
最新文章
- 赛灵思FPGA中的主要时钟资源介绍
- Jquery Mobile转场特效之slide | 小小iPhone开发
- CSS中通过import方式导入的方法
- 【Python面试】 列举Python中的标准异常类?
- “2019大数据与实体经济深度融合全国行”盛大启动
- 哪本书是对程序员最有影响(stackoverflow)
- 社群商业模式设计方案
- 解决内网用户不能正常访问内部WEB服务器问题
- 深入理解Python中的yield和send
- Bootstrap 模态框(Modal)插件
- JavaScript parseInt() toString()函数
- 网络安全系统性学习路线「全文字详细介绍」
- DNS服务器设置正确,DNS服务器配置(DNS各属性详细介绍)
- matlab绘制离散信号结论,实验二 离散时间信号的表示及运算
- BatchConfigTool批量配置工具
- BJFU_数据结构习题_274六度空间理论
- uni-app -- 小程序添加激励视频(字节-抖音小程序)
- 一些不错的酷站欣赏的网站
- 【实验分享】备份IOS文件
- 高中物理应用计算机教学心得,高中物理教学心得
热门文章
- 2019级软件1班安卓实训总结
- Python学习笔记:目录与文件操作
- 安卓案例:利用定时器实现逐帧动画
- 6.边缘检测:梯度——边缘检测、导数与边缘、什么是梯度_2
- 大学物理上册详细笔记_干货满满!快来pick自哈军工以来的学霸笔记!
- 【英语学习】【English L06】U04 Adventure L4 I got lost in New York
- 【OpenStack】【Nova】安装与配置详解 (1)
- 简述osi参考模型各层主要功能_OSI参考模型各层主要功能
- python 贴吧自动发帖_python接口自动化3-自动发帖(session)
- iphone彻底删除照片如何恢复_苹果手机删除的照片如何恢复