同步/异步和阻塞的关系

面试题解答系列:同步与异步,阻塞与非阻塞的关系 这几个知识点其实用处很多,也是很容易搞混的,我们平时可能用了但是并没有发现,今天想来总结一下。 我第一次感受到同步和异步的不同是在学习volatile的时候(因为我之前也没有多线程概念),之前也被同步啊这些概念搞的很乱。当我主线程新建了一个子线程之后两个线程是同时运行的,当时我才发现原来他们不是串行的,献丑了。好了进入正题。 从总体来看,同步和异步的概念是大于阻塞与非阻塞,并且他们之间没有对应关系... 阅读详情

很多人把 同步/异步 与 阻塞/非阻塞 联系在一起,甚至等同,两者是有区别的。

同步/异步

网络通信中的同步机制和异步机制是描述通信模式的概念。同步机制,是指发送方发送请求后,需要等待接收到接收方发回的响应后,才接着发送下一个请求;异步机制,和同步机制正好相反,在异步机制中,发送方发出一个请求后,不等待接收方响应这个请求,就继续发送下个请求。在同步机制中,所有的请求在服务器端得到同步,发送方和接收方对请求的处理步调是一致的;在异步机制中,所有来自发送方的请求形成一个队列,接收方处理完成后通知发送方。

阻塞/非阻塞

阻塞和非阻塞用来描述进程处理调用的方式,在网络通信中,主要指网络套接字Socket的阻塞和非阻塞方式,而Socket的实质也就是IO操作。Socket的阻塞调用方式为,调用结果返回之前,当前线程从运行状态被挂起,一直等到调用结果返回之后,才进入就绪状态,获取CPU后继续执行;Socket的非阻塞调用方式和阻塞调用方式正好相反,在非阻塞方式中,如果调用结果不能马上返回当前线程也不会被挂起,而是立即返回执行下一个调用。

两者关系

在网络通信中,经常可以看到有人将同步和阻塞等同、异步和非阻塞等同。事实上,这两对概念有一定的区别,不能混淆。两对概念的组合,就会产生四个新的概念,同步阻塞、异步阻塞、同步非阻塞、异步非阻塞。

1、同步阻塞方式,发送方向接收方发送请求后,一直等待响应;接收方处理请求时进行的IO操作如果不能马上得到结果,就一直等到返回结果后,才响应发送方,期间不能进行其他工作。比如,在超市排队付账时,客户(发送方)向收款员(接收方)付款(发送请求)后需要等待收款员找零,期间不能做其他的事情;而收款员等待收款机返回结果(IO)操作后才能把零钱取出来交给客户(响应请求),期间也只能等待,不能做其他事情。这种方式实现简单,但是效率不高。

2、同步非阻塞方式,发送方向接收方发送请求后,一直等待响应;接收方处理请求时进行的IO操作如果不能马上得到结果,就立即返回,去做其他事情,但由于没有得到请求处理结果,不响应发送方,发送方一直等待。一直到IO操作完成后,接收方获得结果响应发送方后,接收方才进入下一次请求过程。在实际中不使用这种方式。

3、异步阻塞方式,发送方向接收方发送请求后,不用等待响应,可以接着进行其他工作;接收方处理请求时进行的IO操作如果不能马上得到结果,就一直等到返回结果后,才响应发送方,期间不能进行其他工作。这种方式在实际中也不使用。

4、异步非阻塞方式,发送方向接收方发送请求后,不用等待响应,可以继续其他工作;接收方处理请求时进行的IO操作如果不能马上得到结果,也不等待,而是马上返回去做其他事情。当IO操作完成以后,将完成状态和结果通知接收方,接收方再响应发送方。继续使用在超市排队付账的例子。客户(发送方)向收款员(接收方)付款(发送请求)后在等待收款员找零的过程中,还可以做其他事情,比如打电话、聊天等;而收款员在等待收款机处理交易(IO操作)的过程中还可以帮助客户将商品打包,当收款机产生结果后,收款员给客户结账(响应请求)。在四种方式中,这种方式是发送方和接收方通信效率最高的一种。

PCIE6.0协议学习小记-Flit_Mode PCIE6.0学习 阅读详情

相关推荐

WPS用户看过来:避开格式错乱坑,用WPS Office完美制作红头文件(2024最新版)

本文详细解析了WPS Office与Word在红头文件制作中的核心差异,提供了2024年最新版的零误差实战指南。从字体处理、页面布局到红头制作关键步骤,帮助用户避开格式错乱坑,确保跨设备显示一致。特别针对WPS用户优化,解决字体丢失、版式错位等常见问题。

weixin_26800111的博客 216

线程同步与阻塞的关系

同步(synchronous):进程之间的关系不是相互排斥临界资源的关系,而是相互依赖的关系。进一步的说明:就是前一个进程的输出作为后一个进程的输入,当第一个进程没有输出时第二个进程必须等待。具有同步关系的一组并发进程相互发送的信息称为消息或事件。 异步(asynchronous):异步和同步是相对的,同步就是顺序执行,执行完一个再执行下一个,需要等待、协调运行。异步就是彼此独立,在等待某事件的...

刚学会HelloWorld的XXX的博客 2032

法律AI工具横评:Kimi Work与WorkBuddy,谁更适合法律人?

在人工智能技术日益普及的今天,自然语言处理(NLP)和大语言模型(LLM)正深刻改变着专业领域的工作范式。其核心原理在于通过海量数据训练,使模型能够理解、生成和推理人类语言。这一技术价值在于将从业者从繁琐、重复的信息处理工作中解放出来,极大提升工作效率与知识获取的便捷性。在法律、金融、咨询等对文本处理要求极高的行业,AI助手已展现出在文档分析、信息检索和内容生成方面的巨大潜力。具体到法律应用场景,AI工具能够辅助完成合同审查、法律检索和文书起草等核心任务,成为专业人士的得力助手。本文聚焦于近期备受关注的两款

weixin_30279671的博客 559

弄懂同步与阻塞

一次调用有两个参与者,调用方 和 被调用方。 同步是对被调用方来说的,依据是被调用方的【反馈方式】,如果被调用方一直等到任务执行完才反馈给调用方执行结果,那么就是同步;如果被调用方在被调用时就回复【知道了】,而真正的执行结果以通知的方式告知调用方,那么就是异步。 阻塞和非阻塞是对调用方的处理方式来说的,如果调用方在调用后,不需要等到任务执行结束就去做别的事,那么就是非阻塞的,如果调用方在调用后,需...

肆頭的博客 332

ros2 gazebo仿真阿克曼小车搭载livox mid360雷达流程

流程简介:仿真环境的搭建需要安装ROS2和Gazebo。使用的是Humble版本,需要确认是否已经正确安装。然后是阿克曼小车模型的URDF,需要包括底盘、转向机构、驱动轮等,需要参考现有的阿克曼模型,比如ClearPath的Husky,但需要调整参数。Livox Mid360雷达在Gazebo中的仿真可能没有现成的插件,需要使用通用3D LiDAR插件来模拟。IMU的仿真相对简单,但需要注意噪声模型,以接近真实数据。

weixin_43802726的博客 3209

A类功率放大器

在A类放大器中,导通角是完整的360°或100%的输入信号,而在其他类别的放大器中,晶体管在一个较小的导通角内导通。通过在输出级使用两个互补的晶体管,其中一个晶体管是NPN或N通道类型,而另一个晶体管是PNP或P通道(互补)类型,以所谓的 "推挽 "配置连接,可以获得比A类放大器更大的功率输出和效率。这种类型的电路效率很低(低于30%),而且对直流电源的消耗很大,输出的功率却很小。由于我们感兴趣的是向负载提供最大的交流功率,同时从电源中消耗尽可能少的直流电,所以我们主要关注的是放大器的 "转换效率"。

LSW20072007的博客 2465

同步、异步、阻塞、非阻塞的关系

1、同步与异步:针对调用方而言。调用方是否需要等待返回调用结果。异步不需要等待,可以采用状态通知、回调函数的方式获取结果,以read文件为例同步方式读取文件:read(filename),直接读取文件,需要等待read方法执行完才能继续运行后续代码异步方式读取文件:read(filename, callbackFunc),不需要等read方法执行完,可以立马运行后续代码,读取文件完成后会执行回调函数的逻辑2、阻塞与非阻塞:针对执行方而言。

一条小黑龙的博客 627

DIY必备:如何用N-MOS管搭建低成本DC有刷电机驱动电路(附原理图+避坑指南)

本文详细介绍了如何使用N-MOS管搭建低成本、高可靠性的DC有刷电机驱动电路。针对DIY爱好者,从核心原理、电路设计、元件选型到焊接调试,提供了完整的实战指南,并重点解析了续流二极管选型、栅极驱动设计等关键避坑要点,帮助读者成功驱动电机并确保电路稳定运行。

delta的博客 774

学习笔记-同步(异步)和阻塞(非阻塞)的区别和联系

同步和异步、阻塞和非阻塞是操作系统的常见的概念,刚开始一直搞不懂,在看了n篇文章之后,终于有了一些感悟,现在就将我的理解贴出来与大家分享!!! 第一步:概念 (1)阻塞的概念:一个进程被阻塞的时候,从cpu的角度来说就要发生上下文切换,那么这个被阻塞的进程就不能被继续执行下去,把cpu让出来给别的进程。 (2)同步:在发出一个同步调用的时候,在没有得到结果之前就不会返回。那么对于发起调用的进

caoyan_12727的博客 2511

GEE:哨兵时间序列遥感数据和动态阈值方法计算物候时期EOS/SOS(2)

本文将分享和解释论文《Improved Estimates of Arctic Land Surface Phenology Using Sentinel-2 Time Series》中使用到的基于阈值估算北极地区的植被物候,特别是北极地区的植被季节开始和结束的日期(SoS和EoS)的方法和代码。该方法使用的是使用哨兵2数据,并实现了两种阈值方法( 无平滑的阈值方法、平滑后的阈值方法)。

养乐多的博客 2971

基于 MFC 和 C++ 的语音识别客户端实现方案

语音 SDK:[Microsoft Speech SDK](https://learn.microsoft.com/zh-cn/azure/cognitive-services/speech-service/speech-sdk)(建议使用最新版)1. **Azure 语音服务密钥**:需要在 [Azure 门户](https://portal.azure.com/) 中创建语音资源,获取密钥和区域(如 `eastasia`),替换代码中的占位符。

寒寒豆豆软件公司的博客 152

同步与阻塞的区别与联系

同步与阻塞的区别与联系 何谓同步 在大多数情况下,同步是相对于异步而言的。在iOS开发中,同步主要涉及两个语义:同步调用与线程同步。这里我们主要讨论的是线程同步。 同步调用 同步调用指的是我们在调用一个函数时,立刻可以得到运行结果,并进行后续的操作。 NSString *message = [self getMessage]; // do something 复制代码与之相对的,异步调用指的是在我...

weixin_34204057的博客 3108

5、模型预测控制与分布式MPC控制结构解析

本文深入解析了模型预测控制(MPC)中的双模式预测控制及其稳定性理论,并探讨了分布式MPC的不同控制结构。内容涵盖MPC的基本公式化、性能指标、优化问题以及相关算法步骤,同时比较了集中式MPC、单层分布式MPC和分层分布式MPC的优缺点和适用场景。最后通过流程图和表格形式总结了双模式MPC的算法步骤和控制结构选择思路,并提供了操作建议,以帮助在实际工业系统中更好地应用MPC技术。

tea88的博客 168

java 同步/异步IO和阻塞/非阻塞IO 关系和概念解析

java io模型,及相关同步异步,阻塞非阻塞概念解析

u014631304的博客 4319

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

阻塞/非阻塞/同步/异步方法和多线程的关系?没有任何关系,俩不挨着

1.阻塞非阻塞异步同步是针对方法说的,是评判一个方法运行状态的。和多线程完全两个级别。 2.阻塞非阻塞异步同步是针对方法说的,是评判一个方法运行状态的。和多线程完全两个级别。 3.阻塞非阻塞异步同步是针对方法说的,是评判一个方法运行状态的。和多线程完全两个级别。 2.多线程只是能用来避免阻塞或者同步方法时的效率低问题 1.多线程和阻塞及非阻塞一点关系没有。并不是多线程就非阻塞了。2.比如s...

weixin_34124577的博客 325

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【无标题】同步,异步,阻塞,非阻塞,多线程的概念和关系

同步和异步、阻塞和非阻塞的关系:同步和异步是描述程序执行的方式,而阻塞和非阻塞则是描述程序等待操作完成的方式。阻塞和非阻塞:阻塞指的是程序在等待某个操作完成时会一直停止执行,直到操作完成后才会继续执行。同步和异步:同步指的是程序按照顺序执行,每个操作都需要等待上一个操作完成后才能执行。而异步则是指程序不需要等待上一个操作完成,可以继续执行其他操作。多线程可以用来实现异步操作,通过将需要等待的操作放在一个线程中执行,可以避免阻塞主线程的执行。在这些操作中,同步和异步、阻塞和非阻塞是两个重要的概念。

qq_38103073的博客 483

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

【网络编程】同步和异步、阻塞和非阻塞,I/O和网络I/O

对于多个线程而言,同步、异步就是线程间的步调是否要一致、是否要协调:要协调线程 之间的执行时机就是线程同步,否则就是异步。对于一个线程的请求调用来讲,同步和异步的区别是是否要等这个请求出最终结果(注意, 不是请求的响应,是提交的请求最终得到的结果)。如果要等最终结果,就是同步;如果不等, 干其他无关事情了,就是异步。

Antonio915的博客 1197

Rust 异步/同步与线程的关系

Rust 异步/同步与线程的关系

qq_31661311的博客 543

IO之同步、异步、阻塞、非阻塞 (2)

[原创链接:http://www.smithfox.com/?e=191, 转载请保留此声明, 谢谢!] I/O Model 是一个很大的话题, 也是一个实践性很强的事情, 网上有各种说法和资料, 我们必须用辩证的态度去看待(包括本Blog :) ), 因为有的信息是过时的, 有些则可能是未经实践的片面的理解. 为避免走题(走到 高并发问题 上去了), 本次讨论作了以下限制 (从...

banjuan3729的博客 60

IO中同步、异步与阻塞、非阻塞的区别

一、同步与异步 同步/异步, 它们是消息的通知机制 1. 概念解释 A. 同步 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。 按照这个定义,其实绝大多数函数都是同步调用(例如sin isdigit等)。 但是一般而言,我们在说同步、异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任务。 最常见的例子就是 SendMessage。 该函数

京东放养的爬虫 1202

I/O模型: 阻塞、非阻塞、I/O复用、同步、异步

I/O模型: 阻塞、非阻塞、I/O复用、同步、异步 I/O模型不论在实际使用还是准备笔试面试中都是重要的内容,参考Unix网络编程进行总结如下。(尤其注意红色标注处) 1. 明确I/O考察的对象和流程 参考Unix网络编程,一个输入操作通常包括两个不同的阶段: (1) 等待数据准备好; (2) 从内核向进程复制数据。 对于一个套接字的输入操作,第一步通常涉及等待数据从网

u010412301的博客 270

同步异步/阻塞非阻塞

网络中获取数据的读操作步骤: 等待数据准备。 数据从内核空间拷贝到用户空间。 同步与异步: 同步与异步是针对应用程序与内核的交互而言。也就是上图的read操作,从缓存中读取数据,如果缓存中数据还没有准备好,如果是同步操作,它会一直等待,直到操作完成。如果是异步操作,那么它会去做别的事情,等待数据准备好,内核通知它,它再去读取数据。 同步过程中进程触发IO操作并等待或者轮询的去查看IO操作是否完...

EmbeddedCoder 的优快云博客 6980

同步与异步、阻塞与非阻塞详解

同步与异步,阻塞与非阻塞,这些看似很简单的概念实则包罗万象,大至操作系统,小至个人编程,都会有涉及到的领域

THEWhites的博客 2737

同步、异步 阻塞、非阻塞

一、同步、异步与阻塞、非阻塞 同步和异步都是基于应用程序所在操作系统处理IO事件所采用的方式,同步是应用程序要直接参与IO读写的操作。异步所有的IO读写交给搡作系统去处理,应用程序只需要等待通知。 网上有许多I/O模型的相关文章,主要涉及四个概念,同步,异步,阻塞,非阻塞。有些文章将这四个作了两两组合,于是就有了:异步阻塞和异步非阻塞,可以明确的说,这完全是牵强之理解,无论<Unix网络编程>一书中所列的I/O模式,还是POSIX标准,都没有提这两个概念。异步就是异步!只有同步才有阻塞和非阻

weixin_52375283的博客 5605

同步/异步,阻塞/非阻塞概念深度解析

‍‍原文:https://blog.youkuaiyun.com/lengxiao1993/article/78154467更新:极客重生网络IO作为网络编程核心基础知识,是所以程序员都需要理解掌握的,最近小伙伴在星球群里对这些基本概念理解比较混乱,大多数人可能都没有认真深入去理解过这些基础概念,之前我直播时候说过:内功深厚其实就是对这些基础概念的理解深度,我们学习和工作都是在不断加...

极客重生 3330
上一篇: CentOS下安装Code::Blocks
下一篇: 【C++】c++修改IE浏览器的Internet选项
不知鲸又是鱼
博客等级 码龄10年 16粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值