阻塞/非阻塞/异步/同步

UNIX网络编程--socket中的同步/异步 阻塞/非阻塞 1. 概念理解      在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式: 同步:       所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事。 例如普通B/S模式(同步):提交请求->等待服务器处理->处理完毕返回 这 阅读详情

最近去面试,面试让我描述JAVA IO的三种方式:阻塞,非阻塞,异步。当时我有点儿懵了,异步怎么和阻塞,非阻塞并列了。阻塞和非阻塞是一组相对的概念,异步是和同步相对的概念。

同步

所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。按照这个定义,其实绝大多数函数都是同步调用。


异步

异步的概念和同步相对。当一个异步过程调用发出后,调用者不用等待得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。

阻塞

阻塞调用是指调用结果返回之前,当前线程会被挂起。函数只有在得到结果之后才会返回。很多人会把阻塞和同步混淆,实际上它们是不同的。对于同步调用来说,很多时候当前线程还是active的,只是当前函数没有返回而已。例如,我们在CSocket中调用Receive函数,如果缓冲区中没有数据,这个函数就会一直等待,直到有数据才返回。而此时,当前线程还会继续处理各种各样的消息。如果主窗口和调用函数在同一个线程中,除非你在特殊的界面操作函数中调用,其实主界面还是应该可以刷新。socket接收数据的另外一个函数recv则是一个阻塞调用的例子。当socket工作在阻塞模式的时候,如果没有数据的情况下调用该函数,则当前线程就会被挂起,直到有数据为止。

非阻塞

非阻塞和阻塞的概念相对应,指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。

同步/异步是下, API 通知被调用者的通知方式。阻塞/非阻塞则是 API 调用者的等待方式。

在不同的场景下,同步/异步、阻塞/非阻塞的四种组合都有应用。

同步阻塞

同步阻塞是最简单的方式,常见的调用一个函数并等待其返回。

同步非阻塞

同步非阻塞就是 发出调用请求后,每隔一段时间查询一下执行进度的 的轮询(polling)方式。

异步非阻塞

异步非阻塞,就是把一件事丢到 “后台” 去做,完成之后再通知。

异步阻塞

被调用者异步通知,但是调用者还是不放心,要盯着一直等到返回。这种看上去很傻的方式主要在某些API只提供异步通知的场合,但是业务逻辑又要求阻塞,做完一件事才能再做另外一件事。

同步/异步,阻塞/非阻塞你真的理解了吗?   同步和异步   POSIX对同步和异步的定义,同步I/O操作导致进程阻塞,直到I/O操作完成;异步I/O不导致进程阻塞;   还提到了层次的影响和I/O操作的两个阻塞过程。   的概念描述的是用户线程与内核的交互方式(操作系统层面):同步是指用户线程发起IO请求后需要等待或者轮询内核IO操作完成后才能继续执行;而异步是指用户线程发起IO请求后仍继续执行,当内核IO操作完成后会通知用户线程,或者... 阅读详情

相关推荐

深度学习 tesorflow2.0版本 入门第一章

为什么要学tensflow 深度学习发展迅猛 框架灵活 google开发 公司应用广泛 2.0更加灵活 后面会学习的项目 图像分类 房价预测 泰坦尼克号生存预测 文本分类 文本生成 机器翻译 核心部分 模型训练 tesorboard----> 查看模型训练进度 模型保存和部署 分布式训练-----> 加速训练速度,提升训练效率 TensorFlow常用库:Tfds, tfhub,tensor2tensor 多平台云端环境GPU:Goolgle cloud环境配置,AWS环境配置 kaggle平

weixin_46969441的博客 1236

java实现异步非阻塞的几种方式-接口回调

java实现异步非阻塞的几种方式-3 3. 接口回调 在异步阻塞的调用过程中线程还是会存在于阻塞中。等待响应的结果,那能不能在发起请求后就不再关心这个逻辑,而执行其他的任务呢?那就要用到callback机制。 还是以订单查询为示例。先来说下整个的调用链吧。 当这个异步回调机制加入之后,原来order的等待的结果的响应就不存在,可以做其他的事情去了,等着其他用户和商品服务完成之后,调用即可。 3.1 样例代码 订单服务的代码: @RestController @RequestMapping("/order"

bug_null的博客 1217

ISP图像处理Verilog仿真框架搭建(附代码)

基于Verilog的图像处理仿真框架搭建

路漫漫其修远兮,吾将上下而求索 1898

同步、异步、阻塞、非阻塞、回调函数

同步: 执行一个操作之后,等待结果,然后才继续执行后续的操作。 异步: 执行一个操作后,可以去执行其他的操作,然后等待通知再回来执行刚才没执行完的操作。 阻塞: 进程给CPU传达一个任务之后,一直等待CPU处理完成,然后才执行后面的操作。 非阻塞: 非阻塞就是将阻塞的等候时间区块细分成若干个小的阻塞时间块,在若干个阻塞之间,CPU有机会处理其他进程的任务。 进程给CPU传达任务后,继续处理后续的操...

kangkang_style的博客 1011

WPF数据可视化:LiveCharts自定义X轴与Y轴的5个实战技巧(附完整代码)

本文详细介绍了在WPF应用中使用LiveCharts进行数据可视化时,自定义X轴与Y轴的5个核心实战技巧。内容涵盖精确控制刻度步距、深度定制视觉样式、实现多轴布局对比、优化显示空间以及构建响应式动态轴,并提供了完整的C#和XAML代码示例,帮助开发者创建专业且用户体验出色的图表。

moss5的博客 692

CircuitBreaker Resilience4J 介绍

在分布式环境中,我们的应用可能会面临着各种各样的可恢复的异常(比如超时,网络环境异常),此时我们可以利用不断重试的方式来从异常中恢复(Retry Pattern),使整个集群正常运行。然而,也有一些异常比较顽固,突然发生,无法预测,而且很难恢复,并且还会导致级联失败(举个例子,假设一个服务集群的负载非常高,如果这时候集群的一部分挂掉了,还占了很大一部分资源,整个集群都有可能遭殃)。如果我们这时还是不断进行重试的话,结果大多都是失败的。

zzhongcy的专栏 3540

阻塞非阻塞同步异步调用方式以及五种IO模型

一.阻塞与非阻塞 阻塞 在网络通信中,我们会调用read,recv等函数去读取网络中发来的数据,数据先会来到内核的TCP缓冲区中,然后再将数据从内核拷贝到用户的buff中,当缓冲区中没有数据时,read默认会阻塞,也就是将整个进程挂起,等到数据的到来,直到数据就绪,才会被唤醒继续执行; 包括send,send做的工作是将数据从user拷贝到kernel,但是有时内核缓冲区没有足够的位置,也会发生...

KingOfMyHeart的博客 895

量化交易如何利用涨停板策略收割散户

量化交易通过算法筛选特定特征的股票,在早盘建立底仓后,利用大单拉升制造抢筹假象,吸引散户跟风买入。这种策略利用了散户的认知偏差,如锚定效应和从众心理,导致次日低开闷杀。从技术实现来看,量化策略通过控制买入量、隐藏真实意图等手段,精准执行隔日砸策略。对于短线交易者而言,理解量化资金的运作逻辑和识别危险涨停板的特征至关重要,这包括观察封板时间、盘口挂单、量价关系等多维度数据。在算法主导的市场中,散户需要升级交易工具和策略,从预测走势转向应对走势,才能避免成为量化策略的牺牲品。

weixin_33046983的博客 288

大白话搞懂什么是同步/异步/阻塞/非阻塞

前言 在最近的一些面试中,跟应聘者聊了比较多关于“同步/异步,阻塞/非阻塞”相关的话题,发现大家对于这些概念的理解都比较模糊,甚至有的同学会反问“他们不就是同一个东西吗?”。所以借着这么一个机会,我想用一些尽量简单的例子,尽量简洁的语言来聊聊自己对于这些概念的看法。 正文 这篇文章想通过一个老王“候车”的案例来解释这些概念。 同步阻塞 放假了,老王回到了乡下,由于乡下的基础设施比较差,当他在车站候...

深夜里的程序猿 3万+

Aurix TC3xx系列MCU ResourceM模块配置(多核资源分配)

为减轻主核的负载率或者平衡各个核的资源分配,通常需要把一些MCU内部资源分配到从核上,在EB tresos工具中,通过ResourceM模块实现多核资源分配。

m0_38045338的博客 1388

【项目实战】YOLOV5 +实时吸烟目标检测+手把手教学+开源全部

本原创项目长期更新,旨在完成校园异常行为实时精检测,做到集成+N次开发+优化(不止局限于调包)为止,近期将不断更新以下模型+数据+标注文件+教程。关注博主,Star 一下github,一起开始美妙的目标检测之路吧~~ 文章目录本原创项目长期更新,旨在完成校园异常行为实时精检测,做到集成+N次开发+优化(不止局限于调包)为止,近期将不断更新以下模型+数据+标注文件+教程。关注博主,Star 一下github,一起开始美妙的目标检测之路吧~~一、项目展示二、项目资源共享1:训练图片:香烟图片+吸烟手势+烟雾三、

cv君的博客 13万+

同步、异步、阻塞、非阻塞的I/O的区别?

在Java中,同步/异步与阻塞/非阻塞是描述I/O操作特性的两组核心概念,它们从不同维度定义了I/O的行为模式。理解这四者的区别,是设计高性能网络程序的基础。

weixin_43521001的博客 738

YOLO车辆测距、车辆识别与单目测距

YOLO(You Only Look Once)是一种实时物体检测系统,能够识别视频或图像中的多个对象,并确定其位置。结合车辆识别与单目测距技术,YOLO可以用于交通监控、自动驾驶等应用场景,通过单个摄像头实现车辆的识别与距离测量。YOLO结合单目测距技术,在多个应用领域展现出巨大的潜力与灵活性。其实时性和准确性为智能交通、自动驾驶等领域提供了强有力的技术支持。

走向CTO的路上... 1682

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

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

u014631304的博客 4319

SAP B1中文培訓教材_SDK

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

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

什么是阻塞/非阻塞和同步/异步

作者:萧萧 链接:https://www.zhihu.com/question/19732473/answer/241673170 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 IO 概念区分四个相关概念:同步(Synchronous)异步( Asynchronous)阻塞( Blocking )非阻塞( Nonblocking)这四个概念的含义以及相互之间的区别与联系,并不如很多网络博客所写的那么简单, 通过举一些什么商店购物, 买书买报的例子就能讲清楚。进程间通信的同

Woosual的博客 904

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

同步/异步/阻塞/非阻塞/I/O

同步/异步/阻塞/非阻塞/I/O 一、同步/异步 首先要是多个事物,只有一个事物,是不存在同步或异步的。 同步: 指协同步调。即,多个事物不能同时进行,必须一个一个的来,上一个事物结束后,下一个事物才开始。 那当一个事物正在进行时,其他事物在干嘛呢? 严格来讲并没有要求,但一般都处于“等待”状态,因为后面事物的正常进行都需要依赖前面事物的结果或者前面事物正在使用的资源。 因此,可以认为,同步更希望...

baidu_35160588的博客 254

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

I/O阻塞和非阻塞,同步和异步

阻塞,非阻塞,同步,异步描述的都是I/O的一些状态,一个典型的网络I/O包含2个阶段:数据准备(数据就绪)和数据读写,比如说recv,传一个sockfd,buf,buf的大小,数据就绪就是远端有没有数据过来,就是内核相应的sockfd对应的TCP接收缓冲区是否有数据可读,当sockfd,当I/O工作在阻塞模式下的话,当我们调用recv的时候,如果数据没有就绪,recv是会阻塞当前的线程的。

m0_62689947的博客 971

同步 / 异步 + 阻塞 / 非阻塞

摘要:本文系统解析了同步/异步、阻塞/非阻塞两组正交维度的四种组合模式。同步关注结果主动获取,异步依赖回调通知;阻塞会挂起线程,非阻塞允许线程继续执行。重点分析了同步阻塞(如Java BIO)、同步非阻塞(如NIO轮询)、异步阻塞(不合理模式)和异步非阻塞(如Netty)的特点、流程及应用场景。强调异步非阻塞是高并发终极方案,并提供了面试应答策略:先厘清维度区分,结合技术栈(NIO/AIO)和业务场景(秒杀系统),预判回调嵌套等深度问题。最后对比四种模式的线程状态、性能差异和典型技术实现。

个人专长:数据结构和算法、大数据、数据库、主流框架 1037

同步/异步/阻塞/非阻塞 IO

前言 对于NIO以及同步异步的理解不是很深刻,对知识点进行了一下梳理,同时推荐一篇不错的文章! https://blog.youkuaiyun.com/twt936457991/article/details/89668350 Q1:同步/异步/阻塞/非阻塞 IO 的区别? 同步和异步是通信机制,阻塞和非阻塞是调用状态。 同步 同步 IO 是用户线程发起 IO 请求后需要等待或轮询内核 IO 操作完成后才能继续执行。 异步 异步 IO 是用户线程发起 IO 请求后可以继续执行,不等待内核 IO 操作的完成,当内核 IO

Apollo的博客 1189

终极解码:同步/异步 vs 阻塞/非阻塞的I/O奥秘

💡核心洞见同步/异步关注结果获取方式(主动等待 vs 被动通知)阻塞/非阻塞关注等待状态(是否挂起线程)最佳组合是异步非阻塞(外卖APP模式)现代高并发系统都基于异步非阻塞架构理解这些区别是构建高性能系统的基石思考题:为什么数据库连接通常使用同步阻塞模式?评论区分享你的见解!

全栈开发工程师 1246

聊聊同步/异步/阻塞/非阻塞(举栗子说明)

前言 这个几个名词,一开始接触的时候,很容易弄混。所以,总结一下。方便大家,方便自己。不正之处,请大家多多评论,共同探讨。 正文 同步/异步:关注的是消息通信机制 阻塞/非阻塞:关注的是等待消息的状态 举例 就拿我们经常看到的例子吧,小明去烧水这个事情。 1.同步阻塞 小明将水壶放在炉子上开始烧了,然后就在炉子旁边等着,等烧开了,再忙...

福贵儿的博客 1686

同步异步/阻塞非阻塞

同步和异步,阻塞和非阻塞是大家经常会听到的概念,但是它们是从不同维度来描述一件事情,常常很容易混为一谈。 1. 同步和异步 同步和异步描述的是消息通信的机制。 同步 当一个request发送出去以后,会得到一个response,这整个过程就是一个同步调用的过程。哪怕response为空,或者response的返回特别快,但是针对这一次请求而言就是一个同步的调用。 异步 当一个request发送出去以后,没有得到想要的response,而是通过后面的callback、状态或者通知的方式获得结果。可

qq_41607336的博客 4458

Linux I/O模型以及IO同步/异步/阻塞/非阻塞的区别

I/O模型阻塞 I/O(blocking IO)非阻塞 I/O(nonblocking IO)I/O 多路复用( IO multiplexing)信号驱动I/O( signal driven IO)异步 I/O(asynchronous IO)五种I/O模型对比阻塞和非阻塞的区别同步和异步的区别对比图 对于一次IO访问(以read为例),数据会先被拷贝到操作系统内核的缓冲区中,然后才会从操作系统内核的缓冲区拷贝到应用程序的地址空间。所以说,当一个read操作发生时,会经历两个阶段: 等待数据准备(Wait

TABE_的博客 1133

图解同步/异步,阻塞/非阻塞,五种模型之差

I/O模型解析:从阻塞到异步的关键概念 本文系统介绍了五种网络I/O模型的核心特性和实现机制。阻塞I/O简单但效率低下,进程全程挂起;非阻塞I/O通过轮询避免阻塞但消耗CPU;多路复用I/O(如epoll)实现单线程高并发管理;信号驱动I/O通过事件通知减少轮询,但信号可靠性存疑;异步I/O(如AI/O)由内核完成全部操作后回调,实现真正的非阻塞。文章通过流程图对比了各模型在"同步/异步"(消息通知)和"阻塞/非阻塞"(等待状态)维度的本质差异,指出多路复用和异步I/

Mine:19829102887@163.com 可以一起学习! 1059

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

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

Antonio915的博客 1197
上一篇: HTTP协议头详解
下一篇: 创建者模式
hunter800421
博客等级 码龄22年 60粉丝 97原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值