展开

关键词

、异、非

、异和非(网络编程) 所谓,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。 按照这个定义,其实绝大多数函数都是调用(例如sin, isdigit等)。 :小明一直盯着载进度条,到 100% 的时候就完成。 :小明提交载任务后就去干别的,每过一段时间就去瞄一眼进度条,看到 100% 就完成。 (轮询) 异:小明换了个有载完成通知功能的软件,载完成就“叮”一声。 (最机智) 也就是说,/异载软件的通知方式,或者说 API 被调用者的通知方式。/非则是小明的等待方式,或者说 API 调用者的等待方式。 在不的场景/异/非的四种组合都有应用。

47550

什么是和非 和非是针对于进程在访问数据的时候,根据IO操作的就绪状态来采取的不方式,方式读取或者写入函数将一直等待,而非方式,读取或者写入函数会立即返回一个状态值。 /异/非的区别 与异:针对数据访问的方式,程序是主动去询问操作系统数据准备好了么,还是操作系统在数据准备好的时候通知程序。 所以这一是异的。 内核<---->应用程序  执行,/非。用户进程/线程无法直接读写内核数据,需要数据在用户空间和内核空间搬来搬去。除非个别接口,否则一般是的。 可以是或非则一直在等待内核/应用程序把IO数据准备好,非则是直接返回内核/应用程序是否已经准备好数据。 应用程序框架:或异。 IO多路复用,,异和非 区别 关于异与非 解读I/O多路复用技术

68660
  • 广告
    关闭

    腾讯云618采购季来袭!

    一键领取预热专享618元代金券,2核2G云服务器爆品秒杀低至18元!云产品首单低0.8折起,企业用户购买域名1元起…

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

    、异、非

    与异 与异是针对应用程序与内核的交互而言的。过程中进程触发IO操作并等待或者轮询的去查看IO操作是否完成。 这种情况,用户不能关闭界面,如果关闭了,即迁移程序就中断了。,是所有的操作都做完,才返回给用户结果。即写完数据库之后,在相应用户,用户体验不好。 调用是指调用结果返回之前,当前线程会被挂起。函数只有在得到结果之后才会返回。有人也许会把调用和调用等起来,实际上它们是不的。 当socket工作在模式的时候, 如果没有数据的情况调用该函数,则当前线程就会被挂起,直到有数据为止。 /异/非的组合 形式: 等待执行结果是一直等待,执行时线程挂起(未对fd 设置O_NONBLOCK 标志位的read/write 操作) 形式:等待执行结果是一直等待,

    49440

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

    18020

    & 非 | & 异

    这里讲的都是基于IO的 、非、异 ---- 一个典型的IO操作包括了两个阶段,数据准备和数据读写。比如说现在要使用 recv 执行一个读操作,数据就绪就是远端是否有数据可读。 当IO工作在状态的时候,如果数据没有就绪,recv就会当前线程;如果说IO工作在非状态,会立即返回。 一个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。

    12610

    IO - ,异,非

    (synchronous) IO和异(asynchronous) IO,(blocking) IO和非(non-blocking)IO分别是什么,到底有什么区别? 这其实是因为不的人的知识背景不,并且在讨论这个问题的时候上文(context)也不相。所以,为了更好的回答这个问题,我先限定一本文的上文。 本文讨论的背景是Linux环境的network IO。 再说一IO发生时涉及的对象和骤。 而在用户进程这边,整个进程会被。当kernel一直等到数据准备好了,它就会将数据从kernel中拷贝到用户内存,然后kernel返回结果,用户进程才解除block的状态,重新运行起来。

    23210

    IO - ,异,非

    (synchronous) IO和异(asynchronous) IO,(blocking) IO和非(non-blocking)IO分别是什么,到底有什么区别? 这其实是因为不的人的知识背景不,并且在讨论这个问题的时候上文(context)也不相。所以,为了更好的回答这个问题,我先限定一本文的上文。 本文讨论的背景是Linux环境的network IO。 再说一IO发生时涉及的对象和骤。 而在用户进程这边,整个进程会被。当kernel一直等到数据准备好了,它就会将数据从kernel中拷贝到用户内存,然后kernel返回结果,用户进程才解除block的状态,重新运行起来。

    30230

    | 导语 是开发中经常碰到的概念,但是很多人都没理解清楚,或者混淆了它们的概念。最近看了一些材料,发现以前很多理解都是错的,所以重新整理了一。 先说本文的主要观点: 讨论、异、非这些概念的时候,要先确定讨论范围。 先确定要讨论的是IO模型,还是IO操作,又或是在讨论线程的安全机制。 IO 操作 关于IO操作, 首先说与非的概念: IO操作的完成往往是需要一定条件的,比如等待可读、可写的,也就是说IO操作很可能是没办法立即完成的。 那么,如果在IO操作没办法立即完成时,不继续往执行而是等待其完成,则该操作是的。如果我们不等待,则认为其实非的。 异就是,我告诉你要做什么(request),至于现在能不能做,什么时候做,我并不关心,通知发了(enqueue)就返回。反之则是和非关注的是最终结果是否返回了。

    610230

    、异、非

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

    15110

    、异、非

    与异   和异关注的是消息通信机制。就是在发出一个【调用】时,在没有拿到结果之前,该【调用】就不返回,但是一旦调用返回,就得到返回值了。    举个例子:   你打电话问书店老板有没有《分布式系统》这本书,如果是通信机制,书店老板会说,你稍等一,我查一,然后开始查啊查,等查好了(可能是   5秒,也可能是一天)告诉你结果(返回结果)。 总结: 和异针对应用程序来说,关注的是程序中间的协作关系。   :执行一个操作之后,等待结果,然后才继续执行后续的操作。    异:执行一个操作之后,可以去执行其他操作,然后等待通知再回来执行刚才没执行完的操作。 1. 与非   和非关注的是程序在等待调用结果(消息,返回值)时的状态。    与非与是否无关。 总结: :进程给CPU传达一个任务之后,一直在等待CPU处理完成,然后才执行后边的操作。

    25920

    、异和非

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

    9140

    IO-、异、非

    与异(线程间调用) 与异是对应于调用者与被调用者,它们是线程之间的关系,两个线程之间要么是的,要么是异操作时,调用者需要等待被调用者返回结果,才会进行操作 而异则相反 ,调用者不需要等待被调用者返回调用,即可进行操作,被调用者通常依靠事件、回调等机制来通知调用者结果 与非(线程内调用) 与非是对一个线程来说的,在某个时刻,线程要么处于,要么处于非 回调函数 二、线程与异线程: 线程:即两个线程调要一致,其中一个线程可能要等待另外一个线程的运行,要相互协商。快的等到慢的调一致。 如:发送方发出数据后,不等接收方发回响应,接着发送个数据包的通讯方式。 可以是实现的一种手段!例如两个东西需要,一旦出现不情况,我就快的一方,使双方达到是两个对象之间的关系,而是一个对象的状态。 四种组合方式 方式: 发送方发送请求之后一直等待响应。

    36631

    与异与非

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

    26000

    与异和非

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

    24720

    与异 与非

    1.3小结:      和异仅仅是关于所关注的消息如何通知的机制,而不是处理消息的机制.也就是说,的情况,是由处理消息者自己去等待消息是否被触发,而异的情况是由触发机制来通知处理消息者 2.、异、非的理解 2.1I/O      官方解释:用户空间的应用程序执行一个系统调用时,会导致应用程序。 2.2I/O      官方解释:      我的理解:我去银行存钱时,我不得不在队伍中排队等待,但我在等待过程中我还会打电话看书。 2.3异I/O      官方解释:另外一个解决方案是带有通知的非 I/O。 3.总结      与异是一组相对概念,针对的是自己等待还是别人通知      和非是一组相对概念,针对的是等待过程中,等待者的操作。

    25720

    浅析

    关键点: 和异是与进程相关的,与异主要是从消息通知机制角度来说的。和非是与线程相关的,是等待消息通知时的状态角度来说的。 Linux五种IO模型: 从根本上讲I/O操作分为两部分,用户层API调用(内核);内核层完成系统调用(发起I/O请求) 所以“异/”的是指API调用;“/非”是指内核完成I/O调用的模式 (NIO):是用户层的读或写的请求转换成内核的I/O请求,用户层,内核I/O非(读到返回字节,读不到返回-1)。 总结:和异仅仅是关注的消息如何通知的机制,而与非关注的是等待消息通知时的状态。 也就是说,的情况,是由处理消息者自己去等待消息是否被触发,而异的情况是由触发机制来通知处理消息者。

    30780

    Java和异和非

    和异和非 和异关注的是消息通信机制. 是指: 发送方发出数据后, 等待接收方发回响应后才发一个数据包的通讯方式. 面给出Java代码的例子. : int i = System.in.read(); 当命令终端没有输入时, 调用该方法的线程被 ,表现出和终端. 但是到左后县城需要callable任务的结果时, 就需要了, get()方法通过来实现. offer()方法并没有当前线程, 而又希望, 于是通过循环来实现, 最终实现. 异: 没有例子. 就是用来实现的,这和有什么区别, 那实现它还有什么用呢?

    2.8K31

    番外:,了解一?(十三节)

    ]还是[ 非 ]的,异表现在于馒头好了后,阿梅会主动告诉研究僧 总结一大概意思就是: [ ]和[ 非 ]在于等馒头的时候,研究僧在干什么 [ ]和[ 异 ]在于是研究僧自己主动获取馒头状态 也就是说select\poll\epoll也是的,而在Linux只有AIO(PHP中的扩展叫做EIO)是异。 既然在LinuxNginx事件是基于epoll实现的,然而上面又说了epoll这样的IO复用属于,那这里为什么会说[ 异 ]非? 在Linux,指的就是AIO,唯有AIO才是真正符合定义(此处定义既指APUE中的经典异定义)的异个章节通过代码实战来说明[ ]和[ ],AIO的咱就不碰了,有兴趣学自己可以折磨自己。

    29531

    相关产品

    • 云服务器

      云服务器

      云端获取和启用云服务器,并实时扩展或缩减云计算资源。云服务器 支持按实际使用的资源计费,可以为您节约计算成本。 腾讯云服务器(CVM)为您提供安全可靠的弹性云计算服务。只需几分钟,您就可以在云端获取和启用云服务器,并实时扩展或缩减云计算资源。云服务器 支持按实际使用的资源计费,可以为您节约计算成本。

    相关资讯

    热门标签

    扫码关注云+社区

    领取腾讯云代金券