首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

同步、异步阻塞阻塞

同步与异步 同步与异步是针对应用程序与内核交互而言。同步过程中进程触发IO操作并等待或者轮询去查看IO操作是否完成。...阻塞阻塞   应用进程请求I/O操作时,如果数据未准备好,如果请求立即返回就是非阻塞,不立即返回就是阻塞。简单说就是做一件事如果不能立即获得返回,需要等待,就是阻塞,否则就可以理解为阻塞。...阻塞 阻塞阻塞概念相对应,指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。...同步/异步阻塞/阻塞组合 同步阻塞形式: 等待执行结果是一直等待,执行时线程挂起(未对fd 设置O_NONBLOCK 标志位read/write 操作) 同步阻塞形式:等待执行结果是一直等待,...异步阻塞形式:在处理消息是不等待,在执行消息是也不等待。

2.9K40
您找到你想要的搜索结果了吗?
是的
没有找到

同步异步阻塞阻塞

同步/异步阻塞/阻塞区别 同步与异步:针对数据访问方式,程序是主动去询问操作系统数据准备好了么,还是操作系统在数据准备好时候通知程序。...阻塞异步区别: 阻塞可以通过轮询或者信号/事件机制来实现,其目的是由内核通知我们何时可以启动一个I/O操作 而异步I/O模型是在内核IO完成后,由内核通知我们I/O操作已经完成。...可以是阻塞阻塞阻塞则一直在等待内核/应用程序把IO数据准备好,阻塞则是直接返回内核/应用程序是否已经准备好数据。 应用程序框架:同步或异步。...框架若使用异步IO,则通常需要应用程序内核之间是非阻塞。一旦内核应用程序数据IO完成,则执行回调函数,执行一定操作。 参考文章: 怎样理解阻塞阻塞与同步异步区别?...IO多路复用,同步,异步阻塞阻塞 区别 关于异步,同步,阻塞阻塞 解读I/O多路复用技术

3.1K60

阻塞 & 阻塞 | 同步 & 异步

这里讲都是基于IO 阻塞阻塞、同步、异步 ---- 一个典型IO操作包括了两个阶段,数据准备和数据读写。比如说现在要使用 recv 执行一个读操作,数据就绪就是远端是否有数据可读。...当IO工作在阻塞状态下时候,如果数据没有就绪,recv就会阻塞当前线程;如果说IO工作在阻塞状态下,会立即返回。...返回值-1的话,就说明连接出现问题,连接异常;如果返回值是0,且errno是EAGIN的话,就说明这是一个正常阻塞,返回数据未就绪状态。...一个同步IO接口示例: char buf[1024]; int sz = recv(sockfd,buf,1024,0); //阻塞:一直在这儿死等 //阻塞:时不时回来问一下 if(sz>0)...,阻塞阻塞都是同步IO,只有使用了特殊API才是异步IO。

2.9K10

同步、异步阻塞阻塞

阻塞 阻塞阻塞概念相对应,指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。...阻塞对象上可以有阻塞调用方式,我们可以通过一定API去轮询状态,在适当时候调用阻塞函数,就可以避免阻塞。而对于阻塞对象,调用特殊函数也可以进入阻塞调用。...不过小明仍然一直等待“叮”声音(看起来很傻,不是吗)最蠢 异步阻塞:仍然是那个会“叮”一声下载软件,小明提交下载任务后就去干别的,听到“叮”一声就知道完成了。...(最机智) 也就是说,同步/异步是下载软件通知方式,或者说 API 被调用者通知方式。阻塞/阻塞则是小明等待方式,或者说 API 调用者等待方式。...在不同场景下,同步/异步阻塞/阻塞四种组合都有应用。

2.2K50

同步、异步阻塞阻塞

同步和异步 同步:是用户线程发起IO请求需要等待或者轮询内核IO操作完成后才能继续执行。...异步:用户线程发起IO请求后任需要继续执行,当内核IO操作完成后会通知用户线程,或者调用用户注册回调函数。 阻塞阻塞 阻塞:是指IO操作需要彻底完成后才能返回用户空间。...阻塞:是指IO操作被调用后立即返回一个状态值,无需等待IO操作完成。 同步和异步(线程间调用) 同步和异步是对应调用者和被调用者,他们是线程之间关系,两个线程之间要么是同步,要么是异步。...阻塞阻塞(线程内调用) 阻塞阻塞是对于一个线程来讲,在任意时刻,线程要么是处于阻塞,要么是出于阻塞阻塞阻塞关注程序等待调用结果(消息,返回值)时状态。...阻塞调用是指调用结果返回之前,当前线程会被挂起,调用线程只有在得到结果之后才会返回。 阻塞调用是指不能立刻得到返回结果之前,该调用就不会阻塞当前线程。

2.2K40

同步异步阻塞阻塞详解

相反异步就是,调用该函数后,不等待函数结果返回,比如说开一个线程,让函数在线程运行,这叫异步。...阻塞阻塞 对于阻塞阻塞,其实更关心是进程状态,如果函数返回结果之前,主进程被挂起,也就是处于阻塞状态,那这时候整个过程是阻塞;如果结果返回之前,主进程状态是非阻塞,那整个过程是非阻塞。...这时候关心是你是否在等待结果,有没有不管这件事 阻塞阻塞: 你打电话问书店老板有没有《分布式系统》这本书,你如果是阻塞式调用,你会一直把自己“挂起”,直到得到这本书有没有的结果,如果是非阻塞式调用...在这里阻塞阻塞与是否同步异步无关。跟老板通过什么方式回答你结果无关。...这时候关心是你是否立即有答复,你是否离开了书店 c++ socket阻塞阻塞代码 阻塞模式下socket读取 int main(){ #创建和绑定socket,creat和bind函数

1.9K50

深入理解--异步阻塞同步和阻塞异步阻塞

异步阻塞概念实际上已经出现了很长一段时间。但是异步真正开始流行起来,是因为AJAX技术逐渐成为主流web开发技术。...同步 ,异步阻塞阻塞这几个概念相互之间联系紧密,很难区分。很多程序员都不知道它们之间具体不同。...本文就会详细讨论这个问题,希望能帮助读者更好了解这几个概念 同步和阻塞 首先,我们先开始介绍与异步阻塞对立两个概念:同步和阻塞 对于web开发者来说,理解同步概念相对比较容易,因为HTTP协议就是一个同步协议...在发送下一个请求之前必须等待响应到达才行,这就成为了HTTP协议一个巨大性能瓶颈,当然为了解决这个问题,后来就出现了异步AJAX技术。 阻塞概念相对也是比较容易理解。...这个方法调用会一直阻塞,因为他会一直等待直到输入数据可以用来读取。这通常会造成性能瓶颈,因为这个方法阻塞,导致无法继续执行随后操作。 异步阻塞 异步阻塞就是同步和阻塞相反面。

99840

浅析同步异步阻塞阻塞

关键点: 同步和异步是与进程相关,同步与异步主要是从消息通知机制角度来说阻塞阻塞是与线程相关阻塞阻塞是等待消息通知时状态角度来说。...在这里我们每一个办理业务的人相当于一个进程,这就是同步与异步阻塞阻塞: 如果上面排队和取号之后,我们什么都不做,只是等待通知到我们去办理业务,那就是阻塞。...Linux五种IO模型: 从根本上讲I/O操作分为两部分,用户层API调用(内核);内核层完成系统调用(发起I/O请求) 所以“异步/同步”是指API调用;“阻塞/阻塞”是指内核完成I/O调用模式...信号驱动式IO:为异步阻塞一种,把上述订阅I/O事件,转换成用信号驱动方式实现。 异步阻塞(AIO):用户层读或写请求转换成内核I/O请求,用户层异步,内核I/O阻塞。...不过这种只是看上去很美,Java里实现方式还是NIO一套东西。 总结:同步和异步仅仅是关注消息如何通知机制,而阻塞阻塞关注是等待消息通知时状态。

1.9K80

同步、异步阻塞阻塞

总结: 同步和异步针对应用程序来说,关注是程序中间协作关系。   同步:执行一个操作之后,等待结果,然后才继续执行后续操作。   ...异步:执行一个操作之后,可以去执行其他操作,然后等待通知再回来执行刚才没执行完操作。 1. 阻塞阻塞   阻塞阻塞关注是程序在等待调用结果(消息,返回值)时状态。   ...阻塞调用是指调用结果返回之前,当前线程会被挂起,调用线程只有在得到结果之后才会返回。   阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程。   ...阻塞阻塞与是否同步异步无关。 总结: 阻塞:进程给CPU传达一个任务之后,一直在等待CPU处理完成,然后才执行后边操作。   ...阻塞:进程给CPU传达一个任务之后,继续处理后续操作,隔段时间再来询问之前操作是否完成,这样机制也叫轮询。

2.1K20

同步异步阻塞阻塞

如果你是个研发,同步、异步阻塞阻塞(还有IO多路复用)这些概念应该不陌生了。但是很多人却没有真正搞懂他们含义,甚至经常把他们混淆了。 先上几个错误表达提提神: 阻塞IO模型是异步IO。...IO多路复用模型是异步IO。 第一个表达,“阻塞IO模型是异步IO” 说法是错误,在UNP一书中有介绍,那么“阻塞IO模型是同步IO模型”正确么?...看起来跟阻塞IO操作概念没什么不同,其实不然。异步IO操作是:只要把request加入到队列中就返回。和阻塞IO操作不同是,异步操作连描述符是否准备好也不需要去检查。...从上面的介绍可以得出: 如果一个IO操作是异步操作,那他一定是非阻塞。但是如果阻塞操作却未必是异步IO操作。...总结 前面根据概念讨论范围,分别介绍了与同步、异步阻塞阻塞等相关概念。其实他们也是有共通点。 同步和异步关注是消息通信机制。

1.9K230

同步、异步阻塞阻塞

通常,同步操作是阻塞,而异步操作阻塞,但两对概念也可以交叉组合。 同步与异步是基于消息和通信概念。...异步操作立即返回,操作完成后通知,而同步操作等待操作完成才返回(返回就相当于完成通知,也意味着没有通知)。 阻塞阻塞最大区别在于,执行操作后资源是否可用(当然是否阻塞也是他们区别)。...阻塞操作执行后资源可用,阻塞操作执行后则不一定可用。 例如同步阻塞,执行语句后就可以做别的,但是资源不可用,没有完成通知,因此需要轮询。...异步阻塞,执行语句后不能做别的,执行下一条语句时资源已经可用了,有完成通知(异步阻塞和同步阻塞只差一个通知,基本没有区别)。

1.5K10

关于IO同步,异步,阻塞,阻塞

中途正好讨论了网络IO同步、异步阻塞阻塞概念,当时讲下来,大家理解各不相同,各执己见。搜索了网络上一些文章,观点也各不相同,甚至连wiki也将异步阻塞当成一个概念在解释。...虽然网络上充斥了大量关于同步、异步阻塞阻塞文章,但大都是抄来抄去,没有一个权威说法。...阻塞阻塞 那么阻塞阻塞呢?注意到以上五个模型。阻塞IO,阻塞IO,只是上面的五个模型中两个。阻塞阻塞,是针对单个进程而言。 当对多路复用IO进行调用时,比如使用poll。...因为poll底层实现,是去扫描每个文件描述符(fd),而如果要对感兴趣fd进行扫描,那么只能将每个描述符设置成阻塞形式(对于用户进程来讲,设置fd是阻塞还是非阻塞,可以使用系统调用fcntl),...这就要看fd状态了,如果fd被设置成了阻塞,那么此时read就是非阻塞;如果fd被设置成了阻塞,那么此时read就是阻塞

86140

关于IO同步,异步,阻塞,阻塞

中途正好讨论了网络IO同步、异步阻塞阻塞概念,当时讲下来,大家理解各不相同,各执己见。搜索了网络上一些文章,观点也各不相同,甚至连wiki也将异步阻塞当成一个概念在解释。...虽然网络上充斥了大量关于同步、异步阻塞阻塞文章,但大都是抄来抄去,没有一个权威说法。...阻塞阻塞 那么阻塞阻塞呢?注意到以上五个模型。阻塞IO,阻塞IO,只是上面的五个模型中两个。阻塞阻塞,是针对单个进程而言。 当对多路复用IO进行调用时,比如使用poll。...因为poll底层实现,是去扫描每个文件描述符(fd),而如果要对感兴趣fd进行扫描,那么只能将每个描述符设置成阻塞形式(对于用户进程来讲,设置fd是阻塞还是非阻塞,可以使用系统调用fcntl),...这就要看fd状态了,如果fd被设置成了阻塞,那么此时read就是非阻塞;如果fd被设置成了阻塞,那么此时read就是阻塞

780100

异步,同步,阻塞阻塞程序实现

终于用透支生命方法把这一课学完了。感动。以后不这样了。 实现异步阻塞是一个大命题,这里只从原理出发。我会慢慢修改这篇文章。 本文将从异步sleep实现入手,来讲解异步阻塞程序原理。...什么是异步,同步,阻塞阻塞 在写这篇文章前,我对这四个概念是非常模糊。 同步,异步 异步同步差异,在于当线程调用函数时候,线程获取消息方式....同步: 线程 ----我主动来拿结果----> 函数 异步: 线程 <---你把结果拿给我---- 函数 阻塞阻塞 阻塞阻塞差异,在于线程调用函数时候,线程状态。...线程在同步调用下,也能阻塞(同步轮循阻塞函数状态),在异步下,也能阻塞(调用一个阻塞函数,然后在函数中调用回调,虽然没有什么意义)。 下面,我会慢慢实现一个异步阻塞sleep。...场景三:异步阻塞 实现异步经典方式是使用回调,实现阻塞经典方式是使用线程。 所以,代码就呼之欲出了。

7.5K10

准确理解阻塞阻塞、同步、异步

有的人还会把阻塞/阻塞与同步/异步混合起来理解,认为阻塞=同步、阻塞=异步。 那么到底是不是这样呢?这篇文章,我们就从本质上跟大家分享一下这几个概念,到底应该怎么样去准确理解他们。...0 阻塞/阻塞 首先我们要明确第一个概念是:阻塞/阻塞是一种现象,这是一个相对概念。 例如我们去医院看病。当你挂号之后,发现前面还有人在排队等待。那么前面的人,对于你而言,都是阻塞任务。...在实现过程中,我们约定任务执行顺序、任务优先级、当前任务数量等综合因素,造成了阻塞阻塞结果。...因此,我们学习时候,重点不应该放在阻塞/阻塞概念上,而是应该去关注任务执行顺序和任务优先级约定。阻塞/阻塞只是在描述一个现象,一个结果。...因此为了解决这个问题,我们在页面首页设计了一个进度条功能展示资源加载进度,并以串行方式加载图片。

7510

同步与异步阻塞阻塞

在讲 BIO,NIO,AIO 之前,先来回顾一下这样几个概念:同步与异步阻塞阻塞。...同步与异步 同步: 同步就是发起一个调用后,被调用者未处理完请求之前,调用不返回; 异步异步就是发起一个调用后,立刻得到被调用者回应,表示已接收到请求,但是被调用者并没有返回结果,此时我们可以处理其他请求...阻塞阻塞 阻塞阻塞就是发起一个请求,调用者一直等待请求结果返回,也就是当前线程会被挂起,无法从事其他任务,只有当条件就绪时才能继续; 阻塞阻塞就是发起一个请求,调用者不用一直等着结果返回...举个生活中简单例子: 你妈妈让你烧水,小时候你比较笨啊,在那里傻等着水开(同步阻塞); 等你稍微长大了,你知道每次烧水空隙可以去干点其他事,然后只需要时不时来看看水开了没有(同步阻塞); 再后来...,你们家用上了水开了会发出声音壶,这样你只需要听到响声后,就知道水开了,在这期间你可以随便干自己事情,最后才需要去倒水了(异步阻塞)。

1.1K20
领券