展开

关键词

首页关键词异步与非阻塞

异步与非阻塞

相关内容

  • 同步异步与阻塞非阻塞

    | 导语 同步异步与阻塞非阻塞是开发中经常碰到的概念,但是很多人都没理解清楚,或者混淆了它们的概念。最近看了一些材料,发现以前很多理解都是错的,所以重新整理了一下。同步异步与阻塞非阻塞标题有点简单粗暴,直接用了本文要介绍的几个概念。本来想取个高大上一点的标题,但是感觉主题不那么明了。好,废话不多说,进入正题。IO多路复用模型是异步IO。第一个表达,“非阻塞IO模型是异步IO” 的说法是错误的,在UNP一书中有介绍,那么“非阻塞IO模型是同步IO模型”正确么?IO 操作关于IO操作,首先说下阻塞与非阻塞的概念:IO操作的完成往往是需要一定条件的,比如等待可读、可写的,也就是说IO操作很可能是没办法立即完成的。总结前面根据概念的的讨论范围,分别介绍了与同步、异步、阻塞、非阻塞等相关的概念。其实他们也是有共通点的。同步和异步关注的是消息的通信机制。
    来自:
    浏览:560
  • 异步与非阻塞

    异步调用和非阻塞调用之间的区别是什么?还在阻塞和同步调用之间(请举例说明)?
    来自:
    回答:10
  • 同步与异步 阻塞与非阻塞

    1.2对应技术的问题:          我所选择的排队方式就对应同步与异步。在队伍中等待就是同步,取号等待就是异步。          我在等待过程中,能够进行打电话发短信看书的动作,就是非阻塞。同步、异步、阻塞、非阻塞的理解2.1同步阻塞IO     官方解释:用户空间的应用程序执行一个系统调用时,会导致应用程序阻塞。2.3异步阻塞IO     官方解释:另外一个阻塞解决方案是带有阻塞通知的非阻塞 IO。在这种模型中,配置的是非阻塞 IO,然后使用阻塞 select 系统调用来确定一个 IO 描述符何时有操作。2.4 异步非阻塞IO(AIO)     官方解释:异步非阻塞 IO 模型是一种处理与 IO 重叠进行的模型。读请求会立即返回,说明 read 请求已经成功发起了。3.总结     同步与异步是一组相对概念,针对的是自己等待还是别人通知     阻塞和非阻塞是一组相对概念,针对的是等待过程中,等待者的操作。
    来自:
    浏览:222
  • 广告
    关闭

    腾讯极客挑战赛-寻找地表最强极客

    报名比赛即有奖,万元礼品和奖金,等你来赢!

  • 同步、异步与阻塞、非阻塞

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

    同步与异步  同步和异步关注的是消息通信机制。同步就是在发出一个【调用】时,在没有拿到结果之前,该【调用】就不返回,但是一旦调用返回,就得到返回值了。  异步:执行一个操作之后,可以去执行其他操作,然后等待通知再回来执行刚才没执行完的操作。1. 阻塞与非阻塞  阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态。  阻塞调用是指调用结果返回之前,当前线程会被挂起,调用线程只有在得到结果之后才会返回。  非阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程。  阻塞与非阻塞与是否同步异步无关。 总结: 阻塞:进程给CPU传达一个任务之后,一直在等待CPU处理完成,然后才执行后边的操作。  非阻塞:进程给CPU传达一个任务之后,继续处理后续的操作,隔段时间再来询问之前的操作是否完成,这样的机制也叫轮询。  参考网址: https:www.zhihu.comquestion19732473
    来自:
    浏览:188
  • 同步与异步、阻塞与非阻塞

    区分同步或异步(synchronousasynchronous)简单来说,同步是一种可靠的有序运行机制,当我们进行同步操作时,后续的任务是等待当前调用返回,才会进行下一步;而异步则相反,其他任务不需要等待当前调用返回区分阻塞与非阻塞(blockingnon-blocking)在进行阻塞操作时,当前线程会处于阻塞状态,无法从事其他任务,只有当条件就绪才能继续,比如 ServerSocket 新连接建立完毕,或数据读取、写入操作完成;而非阻塞则是不管 IO 操作是否结束,直接返回,相应操作在后台继续处理。
    来自:
    浏览:198
  • 聊聊同步与异步、阻塞与非阻塞、IO模型

    程序员:如果必须等待A完成后才能执行B那么这个就是阻塞的,如果A,B可以同时执行那么就 是非阻塞的面试官:那你的意思异步同步的概念与阻塞非阻塞一样了?程序员:嗄。。。可以这么说吧。我觉得可以并发执行的就是异步非阻塞的。、通知或回调机制主动通知调用者被调用者的运行状态阻塞非阻塞阻塞非阻塞:关注调用者在等待结果返回之前所处的状态阻塞:(blocking),指IO操作需要彻底完成后才返回到用户空间,调用结果返回之前,调用者被挂起非阻塞同步体现在:等待下载完成通知; 阻塞体现在:等待下载完成通知过程中,不能做其他任务处理; 2. 非阻塞型? 同步非阻塞IO模型 描述:用户线程发起IO请求时立即返回。异步? 异步IO模型 描述:异步IO与信号驱动IO最主要的区别是信号驱动IO是由内核通知何时可以进行IO操作,而异步IO则是由内核告诉我们IO操作何时完成了。
    来自:
    浏览:245
  • 同步与异步阻塞与非阻塞回调【面试+工作】

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

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

    ,印象还是比较模糊,尤其是在一些场景下同步与阻塞,异步与非阻塞感觉没啥区别,但其实这四个术语描述的事物还真不是一回事。下面我们来慢慢探讨他们之间的区别与联系,在这之前,我们还会经常看到下面的组合术语:(一)同步+阻塞(二)同步+非阻塞(三)异步+阻塞(四)异步+非阻塞在当什么是同步和异步,阻塞与非阻塞的概念还没弄清楚之前如果是由服务方通知的,也就是请求方发出请求后,要么在一直等待通知(异步阻塞),要么就先去干自己的事了(异步非阻塞),当事情处理完成之后,服务方会主动通知请求方,它的请求已经完成,这就是异步。异步通知的方式一般是通过状态改变,消息通知,或者回调函数来完成,大多数时候采用的都是回调函数。关于阻塞和非阻塞阻塞和非阻塞在计算机的世界里面,通常指的是针对IO的操作,如网络IO和磁盘IO等。实际生活场景同步,异步,阻塞和非阻塞,会组合成上面提到过的四种结果:(一)同步+阻塞(二)同步+非阻塞(三)异步+阻塞(四)异步+非阻塞举个例子,比如我们去照相馆拍照,拍完照片之后,商家说需要30分钟左右才能洗出来照片
    来自:
    浏览:166
  • 同步异步,阻塞非阻塞

    同步异步与阻塞非阻塞的区别同步与异步:针对数据访问的方式,程序是主动去询问操作系统数据准备好了么,还是操作系统在数据准备好的时候通知程序。阻塞与非阻塞:针对函数(程序)运行的方式,在IO未就绪时,是等待就绪还是直接返回(执行别的操作)。阻塞与非阻塞的区别:阻塞是程序在调用系统函数IO时,在系统执行系统调用时由CPU通过轮询等方式来实现数据的IO。非阻塞是在程序级别通过轮询信号事件的机制,去查看IO数据是否就绪。非阻塞与异步的区别:非阻塞可以通过轮询或者信号事件机制来实现,其目的是由内核通知我们何时可以启动一个IO操作而异步IO模型是在内核IO完成后,由内核通知我们IO操作已经完成。参考文章:怎样理解阻塞非阻塞与同步异步的区别?IO多路复用,同步,异步,阻塞和非阻塞 区别关于异步,同步,阻塞与非阻塞解读IO多路复用技术
    来自:
    浏览:595
  • 同步、异步、阻塞、非阻塞

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

    关键点:同步和异步是与进程相关的,同步与异步主要是从消息通知机制角度来说的。阻塞和非阻塞是与线程相关的,阻塞非阻塞是等待消息通知时的状态角度来说的。在这里我们每一个办理业务的人相当于一个进程,这就是同步与异步。阻塞与非阻塞:如果上面排队和取号之后,我们什么都不做,只是等待通知到我们去办理业务,那就是阻塞的。从根本上讲IO操作分为两部分,用户层API调用(内核);内核层完成系统调用(发起IO请求)所以“异步同步”的是指API调用;“阻塞非阻塞”是指内核完成IO调用的模式。信号驱动式IO:为异步阻塞的一种,把上述的订阅IO事件,转换成用信号驱动的方式实现。异步非阻塞(AIO):用户层的读或写的请求转换成内核的IO请求,用户层异步,内核IO非阻塞。总结:同步和异步仅仅是关注的消息如何通知的机制,而阻塞与非阻塞关注的是等待消息通知时的状态。也就是说,同步的情况下,是由处理消息者自己去等待消息是否被触发,而异步的情况下是由触发机制来通知处理消息者。
    来自:
    浏览:285
  • 对于同步、异步、阻塞、非阻塞的几点浅薄理

    首先我们先来看看:一、同步与异步同步异步, 它们是消息的通知机制(都是通过状态、通知、回调函数来返回结果) 1.异步恰恰与同步相反。异步的概念和同步相对。当一个异步过程调用发出后,调用者不会立刻得到结果。二、阻塞与非阻塞阻塞非阻塞, 它们是程序在等待消息(无所谓同步或者异步)时的状态.1. 概念解释    阻塞阻塞调用是指调用结果返回之前,当前线程会被挂起。函数只有在得到结果之后才会返回。   .可见,同步异步与阻塞非阻塞是两组不同的概念,它们可以共存组合, 而很多人之所以把同步和阻塞混淆,我想也是因为没有区分这两个概念,比如阻塞的readwrite 操作中,其实是把消息通知和处理消息结合在了一起四、同步异步与阻塞非阻塞的组合分析_______阻塞____________________非阻塞_____同步 | 同步阻塞              同步非阻塞异步 | 异步阻塞              
    来自:
    浏览:157
  • 总是搞不懂的同步异步,阻塞非阻塞

    摘要:更好的理解同步异步,阻塞非阻塞的概念和机制。一、同步与异步同步异步, 它们是消息的通知机制。1、概念解释同步所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。二、阻塞与非阻塞阻塞非阻塞, 它们是程序在等待消息(无所谓同步或者异步)时的状态。1、概念解释A、阻塞阻塞调用是指调用结果返回之前,当前线程会被挂起。函数只有在得到结果之后才会返回。三、易混淆的点很多人也会把异步和非阻塞混淆,因为异步操作一般都不会在真正的 IO 操作处被阻塞,比如如果用 select 函数,当 select 返回可读时再去 read 一般都不会被阻塞。可见,同步异步与阻塞非阻塞是两组不同的概念,它们可以共存组合,而很多人之所以把同步和阻塞混淆,我想也是因为没有区分这两个概念,比如阻塞的 readwrite 操作中,其实是把消息通知和处理消息结合在了一起四、同步异步与阻塞非阻塞的组合分析同步阻塞形式:效率是最低的,拿上面的例子来说,就是你专心等待,什么别的事都不做。
    来自:
    浏览:150
  • 深入理解--异步和非阻塞同步和阻塞异步和非阻塞

    异步和非阻塞的概念实际上已经出现了很长一段时间。但是异步真正开始流行起来,是因为AJAX技术逐渐成为主流的web开发技术。同步 ,异步,阻塞,非阻塞这几个概念相互之间联系紧密,很难区分。很多程序员都不知道它们之间的具体的不同。本文就会详细讨论这个问题,希望能帮助读者更好的了解这几个概念同步和阻塞首先,我们先开始介绍与异步和非阻塞对立的两个概念:同步和阻塞对于web开发者来说,理解同步的概念相对比较容易,因为HTTP协议就是一个同步的协议这通常会造成性能的瓶颈,因为这个方法会阻塞,导致无法继续执行随后的操作。异步和非阻塞异步和非阻塞就是同步和阻塞的相反面。通常来说,系统调用会进入内核,一般都是阻塞的,所以read操作往往是阻塞的,会等待可用数据,并且将线程休眠。 现在,我们应该对于异步和非阻塞的概念已经有所了解了。
    来自:
    浏览:163
  • socket阻塞与非阻塞,同步与异步IO模型

    作者:huangguisu 原文出处:http:blog.csdn.nethguisuarticledetails7453390 socket阻塞与非阻塞,同步与异步 1.非阻塞,  就是调用我(函数),我(函数)立即返回,通过select通知调用者 同步IO和异步IO的区别就在于:数据拷贝的时候进程是否阻塞!同步和异步,阻塞和非阻塞,有些混用,其实它们完全不是一回事,而且它们修饰的对象也不相同。,当数据就绪后在读写的时候必须阻塞(区别就绪与读写二个阶段,同步的读写必须阻塞),异步则指主动请求数据后便可以继续处理其它任务,随后等待IO,操作完毕的通知,这可以使进程在数据读写时也不阻塞。较好的做法是,使用套接字的“IO模型”来判断非阻塞套接字是否可读可写。     非阻塞模式套接字与阻塞模式套接字相比,不容易使用。
    来自:
    浏览:1323
  • 同步、异步、阻塞、非阻塞

    同步、异步、阻塞和非阻塞(网络编程)同步所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。按照这个定义,其实绝大多数函数都是同步调用(例如sin, isdigit等)。非阻塞非阻塞和阻塞的概念相对应,指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。不过小明仍然一直等待“叮”的声音(看起来很傻,不是吗)最蠢异步非阻塞:仍然是那个会“叮”一声的下载软件,小明提交下载任务后就去干别的,听到“叮”的一声就知道完成了。(最机智)也就是说,同步异步是下载软件的通知方式,或者说 API 被调用者的通知方式。阻塞非阻塞则是小明的等待方式,或者说 API 调用者的等待方式。在不同的场景下,同步异步、阻塞非阻塞的四种组合都有应用。
    来自:
    浏览:385
  • 网络IO之阻塞、非阻塞、同步、异步总结

    1、前言  在网络编程中,阻塞、非阻塞、同步、异步经常被提到。unix网络编程第一卷第六章专门讨论五种不同的IO模型,Stevens讲的非常详细,我记得去年看第一遍时候,似懂非懂,没有深入理解。3、网络IO模型详细分析  常见的IO模型有阻塞、非阻塞、IO多路复用,异步。以一个生动形象的例子来说明这四个概念。周末我和女友去逛街,中午饿了,我们准备去吃饭。这就是非阻塞。需要不断的询问,是否准备好了。网络IO非阻塞如下图所示:?  目前有很多开源的异步IO库,例如libevent、libev、libuv。异步过程如下图所示:?4、同步与异步  实际上同步与异步是针对应用程序与内核的交互而言的。5、阻塞与非阻塞  简单理解为需要做一件事能不能立即得到返回应答,如果不能立即获得返回,需要等待,那就阻塞了,否则就可以理解为非阻塞。详细区别如下图所示:?
    来自:
    浏览:553
  • 同步 异步 阻塞 非阻塞

    以调用函数为例,同步指的是调用方主动查询返回结果,异步是等待被调用方通知查询结果阻塞是等待返回结果的时间内挂起,非阻塞是等待返回结果的时间内可以干其他事情.同步和阻塞完全不是一件事,是否同步指的是获取返回结果的方式,是否阻塞指的是等待获取结果的时间内是否可以干其他事情
    来自:
    浏览:117

扫码关注云+社区

领取腾讯云代金券