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

同步异步阻塞、非阻塞

同步异步   同步异步关注的是消息通信机制。同步就是在发出一个【调用】时,在没有拿到结果之前,该【调用】就不返回,但是一旦调用返回,就得到返回值了。   ...而异步正好相反,【调用】在发出之后,这个调用就直接返回了,所以没有返回结果。...总结: 同步异步针对应用程序来说,关注的是程序中间的协作关系。   同步:执行一个操作之后,等待结果,然后才继续执行后续的操作。   ...异步:执行一个操作之后,可以去执行其他操作,然后等待通知再回来执行刚才没执行完的操作。 1. 阻塞阻塞   阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态。   ...阻塞阻塞是否同步异步无关。 总结: 阻塞:进程给CPU传达一个任务之后,一直在等待CPU处理完成,然后才执行后边的操作。

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

同步异步 阻塞阻塞

1.2对应技术的问题:           我所选择的排队方式就对应同步异步。在队伍中等待就是同步,取号等待就是异步。          ...1.3小结:      同步异步仅仅是关于所关注的消息如何通知的机制,而不是处理消息的机制.也就是说,同步的情况下,是由处理消息者自己去等待消息是否被触发,而异步的情况下是由触发机制来通知处理消息者...2.同步异步阻塞、非阻塞的理解 2.1同步阻塞I/O      官方解释:用户空间的应用程序执行一个系统调用时,会导致应用程序阻塞。...2.4 异步阻塞I/O(AIO)      官方解释:异步阻塞 I/O 模型是一种处理 I/O 重叠进行的模型。读请求会立即返回,说明 read 请求已经成功发起了。...3.总结      同步异步是一组相对概念,针对的是自己等待还是别人通知      阻塞和非阻塞是一组相对概念,针对的是等待过程中,等待者的操作。

1.2K20

同步异步阻塞、非阻塞

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

1.5K10

同步异步阻塞阻塞

| 导语 同步异步阻塞阻塞是开发中经常碰到的概念,但是很多人都没理解清楚,或者混淆了它们的概念。最近看了一些材料,发现以前很多理解都是错的,所以重新整理了一下。...同步异步阻塞阻塞 标题有点简单粗暴,直接用了本文要介绍的几个概念。本来想取个高大上一点的标题,但是感觉主题不那么明了。 好,废话不多说,进入正题。...再来讨论下同步异步的概念: 同步操作和异步操作这样的表达其实也不太贴切,其实在IO操作中,他们更多是用来描述调用在何时返回。...进程同步线程同步 谈到(并发)服务器编程时,经常会听到进程同步,线程同步等概念。这里的同步同步IO中的同步是较大区别的。...总结 前面根据概念的的讨论范围,分别介绍了同步异步阻塞、非阻塞等相关的概念。其实他们也是有共通点的。 同步异步关注的是消息的通信机制。

1.9K230

同步异步阻塞和非阻塞

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

1.1K20

同步异步阻塞、非阻塞

同步异步 同步异步是针对应用程序内核的交互而言的。同步过程中进程触发IO操作并等待或者轮询的去查看IO操作是否完成。...异步过程中进程触发IO操作以后,直接返回,做自己的事情,IO交给内核来处理,完成后内核通知进程IO完成。 同步 同步的思想是:所有的操作都做完,才返回给用户。...阻塞阻塞   应用进程请求I/O操作时,如果数据未准备好,如果请求立即返回就是非阻塞,不立即返回就是阻塞。简单说就是做一件事如果不能立即获得返回,需要等待,就是阻塞,否则就可以理解为非阻塞。...同步/异步阻塞/非阻塞的组合 同步阻塞形式: 等待执行结果是一直等待,执行时线程挂起(未对fd 设置O_NONBLOCK 标志位的read/write 操作) 同步阻塞形式:等待执行结果是一直等待,...异步阻塞形式:在处理消息是不等待,在执行消息是也不等待。

3K40

同步异步阻塞阻塞

什么是同步异步 同步异步是针对应用程序和内核的交互而言的, 同步指的是用户进程触发IO操作并等待或者轮询的去查看IO操作是否就绪,而异步是指用户进程触发IO操作以后便开始做自己的事情,而当IO操作已经完成的时候会得到...同步/异步阻塞/非阻塞的区别 同步异步:针对数据访问的方式,程序是主动去询问操作系统数据准备好了么,还是操作系统在数据准备好的时候通知程序。...非阻塞异步的区别: 非阻塞可以通过轮询或者信号/事件机制来实现,其目的是由内核通知我们何时可以启动一个I/O操作 而异步I/O模型是在内核IO完成后,由内核通知我们I/O操作已经完成。...框架若使用异步IO,则通常需要应用程序内核之间是非阻塞的。一旦内核应用程序数据IO完成,则执行回调函数,执行一定的操作。 参考文章: 怎样理解阻塞阻塞同步异步的区别?...IO多路复用,同步异步阻塞和非阻塞 区别 关于异步同步阻塞阻塞 解读I/O多路复用技术

3.1K60

阻塞 & 非阻塞 | 同步 & 异步

这里讲的都是基于IO的 阻塞、非阻塞同步异步 ---- 一个典型的IO操作包括了两个阶段,数据准备和数据读写。比如说现在要使用 recv 执行一个读操作,数据就绪就是远端是否有数据可读。...一个同步IO接口的示例: char buf[1024]; int sz = recv(sockfd,buf,1024,0); //阻塞:一直在这儿死等 //非阻塞:时不时的回来问一下 if(sz>0)...{ //在上面的数据没有读取完成之前,是不会进入到这里的 } 如果说异步,就是同步的反面,那也能说得通。...仅被 lio_listio() 函数使用 */ /* Various implementation-internal fields not shown */ }; 陈硕大神说:在处理IO的时候,阻塞和非阻塞都是同步...epoll也属于同步IO。

2.9K10

同步异步阻塞、非阻塞

同步异步阻塞和非阻塞(网络编程) 同步 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。 按照这个定义,其实绝大多数函数都是同步调用(例如sin, isdigit等)。...但是一般而言,我们在说同步异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任务。最常见的例子就是 SendMessage。...异步 异步的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。...(最机智) 也就是说,同步/异步是下载软件的通知方式,或者说 API 被调用者的通知方式。阻塞/非阻塞则是小明的等待方式,或者说 API 调用者的等待方式。...在不同的场景下,同步/异步阻塞/非阻塞的四种组合都有应用。

2.2K50

socket阻塞阻塞同步异步、IO模型

一、概念理解: 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式: 同步/异步主要针对C端: 同步:所谓同步,就是在c端发出一个功能调用时...同步/异步主要针对C端, 但是跟S端不是完全没有关系,同步/异步机制必须S端配合才能实现.同步/异步是由c端自己控制,但是S端是否阻塞/非阻塞, C端完全不需要关心。...阻塞IO和非阻塞IO的区别就在于:应用程序的调用是否立即返回! 同步异步都只针对于本机SOCKET而言的。同步异步,阻塞和非阻塞,有些混用,其实它们完全不是一回事,而且它们修饰的对象也不相同。...I/O操作完毕的方式,当数据就绪后在读写的时候必须阻塞(区别就绪读写二个阶段,同步的读写必须阻塞),异步则指主动请求数据后便可以继续处理其它任务,随后等待I/O,操作完毕的通知,这可以使进程在数据读写时也不阻塞...多线程带来的好处仅仅是在多核CPU 的情况下利用更多的核,而Node.js的单线程也能带来同样的好处。这就是为什么Node.js 使用了单线程、非阻塞的事件编程模式。

1.9K30

socket阻塞阻塞同步异步、IO模型

概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式: 同步/异步主要针对C端: 同步: 所谓同步...同步/异步主要针对C端, 但是跟S端不是完全没有关系,同步/异步机制必须S端配合才能实现.同步/异步是由c端自己控制,但是S端是否阻塞/非阻塞, C端完全不需要关心. 3....同步一般指主动请求并等待I/O操作完毕的方式,当数据就绪后在读写的时候必须阻塞(区别就绪读写二个阶段,同步的读写必须阻塞),异步则指主动请求数据后便可以继续处理其它任务,随后等待I/O,操作完毕的通知...这就是为什么Node.js 使用了单线程、非阻塞的事件编程模式。 2....但低效也是相对的,视情况而定,也可通过良好的设计改善 同步/异步阻塞/非阻塞经常看到是成对出现: 同步阻塞,异步阻塞,同步阻塞

1.6K20

聊聊同步异步阻塞阻塞、IO模型

引言 在面试中我们会碰到这种场景: 面试官:能解释下什么是同步,异步么?...程序员:假如我们执行A,B两个IO操作的时候,如果必须等待A完成后才能执行B那么这个就是 同步的,如果A,B可以同时执行那么就是异步的。 面试官:那能解释下什么是阻塞什么是非阻塞么?...程序员:如果必须等待A完成后才能执行B那么这个就是阻塞的,如果A,B可以同时执行那么就 是非阻塞的 面试官:那你的意思异步/同步的概念阻塞阻塞一样了? 程序员:嗄。。。可以这么说吧。...one by one执行 的就是同步阻塞同步/异步 同步/异步:关注的是消息通信机制 同步:(synchronous) 调用者自已主动等待被调用者返回消息,才能继续执行 异步:(asynchronous...异步 ? 异步IO模型 描述: 异步IO信号驱动IO最主要的区别是信号驱动IO是由内核通知何时可以进行IO操作,而异步IO则是由内核告诉我们IO操作何时完成了。

1.1K10

socket阻塞阻塞同步异步IO模型

作者:huangguisu 原文出处:http://blog.csdn.net/hguisu/article/details/7453390 socket阻塞阻塞同步异步 1....概念理解      在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式: 同步: 所谓同步,就是在发出一个功能调用时,在没有得到结果之前...例如普通B/S模式(同步):提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事 异步异步的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。...同步异步,阻塞和非阻塞,有些混用,其实它们完全不是一回事,而且它们修饰的对象也不相同。...,当数据就绪后在读写的时候必须阻塞(区别就绪读写二个阶段,同步的读写必须阻塞),异步则指主动请求数据后便可以继续处理其它任务,随后等待I/O,操作完毕的通知,这可以使进程在数据读写时也不阻塞

3.1K10

同步异步阻塞和非阻塞

同步异步 同步:是用户线程发起IO请求需要等待或者轮询内核IO操作完成后才能继续执行。...异步:用户线程发起IO请求后任需要继续执行,当内核IO操作完成后会通知用户线程,或者调用用户注册的回调函数。 阻塞和非阻塞 阻塞:是指IO操作需要彻底完成后才能返回用户空间。...非阻塞:是指IO操作被调用后立即返回一个状态值,无需等待IO操作完成。 同步异步(线程间调用) 同步异步是对应调用者和被调用者,他们是线程之间的关系,两个线程之间要么是同步的,要么是异步的。...同步操作时,调用者需要等待被调用者返回结果,才能进行下一步操作。...异步操作相反,调用者不需要等待被调用者返回调用结果,即可进行下一步操作,被调用者通常依赖于事件,信号,回调函数等机制来通知调用者调用结果。

2.2K40

同步异步阻塞阻塞回调【面试+工作】

一、同步异步 概念性 同步异步通常用来形容一次方法调用。 同步方法调用一旦开始,调用者必须等到方法调用返回后,才能继续后续的行为。...这就是异步调用。 二、阻塞阻塞 阻塞阻塞关注的是交互双方是否可以弹性工作。...一般来说,阻塞阻塞式用来形容 CPU 消耗的。我们把 CPU 停下来等待慢操作完成以后再接着工作称为阻塞;把 CPU 在慢操作完成之前去完成其他工作,等慢操作完成后再接着工作称为非阻塞。...一般来说IO模型可以分为:同步阻塞同步阻塞异步阻塞异步阻塞。...异步阻塞IO 此种方式下是指应用发起一个IO操作以后,不等待内核IO操作的完成, 等内核完成IO操作以后会通知应用程序,这其实就是同步异步最关键的区别同步必须等待或者主动的去询问IO是否完成, 异步阻塞

1.2K20

同步异步阻塞阻塞详解

附c++代码 同步异步 同步就是一个调用方发出请求开始,就一直处于等待状态,等待请求结果返回后才能继续执行其他任务。比如说调用一个函数,等待函数结果返回,这叫同步。...举个例子 同步异步: 你打电话问书店老板有没有《分布式系统》这本书,如果是同步通信机制,书店老板会说,你稍等,”我查一下”,然后开始查啊查,等查好了(可能是5秒,也可能是一天)告诉你结果(返回结果)...这时候关心的是你是否在等待结果,有没有不管这件事 阻塞阻塞: 你打电话问书店老板有没有《分布式系统》这本书,你如果是阻塞式调用,你会一直把自己“挂起”,直到得到这本书有没有的结果,如果是非阻塞式调用...在这里阻塞阻塞是否同步异步无关。跟老板通过什么方式回答你结果无关。...这时候关心的是你是否立即有答复,你是否离开了书店 c++ socket阻塞阻塞代码 阻塞模式下的socket读取 int main(){ #创建和绑定socket,creat和bind函数

1.9K50

浅析同步异步阻塞阻塞

关键点: 同步异步进程相关的,同步异步主要是从消息通知机制角度来说的。阻塞和非阻塞线程相关的,阻塞阻塞是等待消息通知时的状态角度来说的。...同步依赖消息的同步返回,异步是通过状态,回调和通知的方式实现的。 阻塞依赖消息返回前线程挂起,不能执行其余的业务(同步只是逻辑上函数没返回,可以执行一些其余操作的)。...场景举例: 同步异步: 去银行办理业务,以前的情况是大家在一个窗口排队(这是不是暴漏年龄),到没到你都得排着队,不能去做别的事情; 现在的情况是到取号机去拿一个号,在到你之前,你甚至可以到银行外面买个东西...在这里我们每一个办理业务的人相当于一个进程,这就是同步异步阻塞阻塞: 如果上面排队和取号之后,我们什么都不做,只是等待通知到我们去办理业务,那就是阻塞的。...总结:同步异步仅仅是关注的消息如何通知的机制,而阻塞阻塞关注的是等待消息通知时的状态。

1.9K80
领券