首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >阻塞和非阻塞I/O

阻塞和非阻塞I/O
EN

Stack Overflow用户
提问于 2015-12-01 02:04:18
回答 2查看 1.1K关注 1票数 0

在类unix系统中,阻塞i/o和非阻塞i/o有什么区别?有没有人用实时场景来解释这些概念。我已经看过网上和书籍上的参考资料了。但是,我仍然无法理解非阻塞i/o的使用。是否有人总结了你对此所知道的,而没有具体说明任何理论概念。

EN

回答 2

Stack Overflow用户

发布于 2015-12-01 02:10:26

通常情况下,一个过程可以完成一个以上的任务。其中一些任务可能取决于外部数据。

现在,假设其中一个任务必须侦听某个可能发出请求的客户端,并处理该请求。为此,进程必须打开套接字并侦听请求。使用阻塞套接字,进程将挂起,直到请求实际出现。这意味着进程必须处理的所有其他任务在请求传入之前都无法处理!但是,对于非阻塞套接字,如果没有请求挂起,则套接字命令将立即返回。因此,该流程可以处理其他任务,并返回并定期检查客户端请求。

同样的情况也适用于作为输入被读取的文件,尽管没有那么频繁:如果一个文件被读取,而另一个进程仍在写入它,那么阻塞读取访问将挂起。非阻塞访问再次允许在同一时间内完成其他工作,然后返回到稍后或在常规基础上读取文件。例如,对于日志文件处理非常重要。所以那些总是在每个定义后面附加东西的文件。

还有其他办法来处理这一问题。但是,文件/套接字操作中的阻塞和非阻塞模式是保持低复杂度的一种实用方法。

票数 1
EN

Stack Overflow用户

发布于 2015-12-01 03:16:07

大概吧。

当你买一个新的房子要建造,你使用一个非阻塞行为,你买它和不等待(非阻塞)到位,直到建设结束。你只是继续过你的生活,有时,构造函数会打电话给你,告诉你你的新房子已经准备好了(signal中断--被动等待),或者你定期打电话给他,以获取一些关于施工过程的信息(poll - active wait)。

当你去餐馆的时候,你使用阻塞行为,你发出命令,然后等待()直到服务。

通常,当您需要一些东西,因为您不能没有所需的东西时,您可以使用阻塞场景。当您需要一些东西,但如果您需要的东西现在不可用时,您可以做一些其他的事情,您可以使用non-blocking场景。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34017596

复制
相关文章
阻塞和非阻塞的实现
我们可能都已经听过阻塞非阻塞的概念,本文以tcp中的connect系统调用为例子(基于1.12.13内核,新版的原理类似,但是过程就很复杂了,有时间再分析),分析阻塞和非阻塞是什么并且看他是如何实现的。话不多说,直接开始。
theanarkh
2021/07/08
2.3K0
阻塞和非阻塞的实现
同步、异步、阻塞和非阻塞
同步和异步 同步:是用户线程发起IO请求需要等待或者轮询内核IO操作完成后才能继续执行。 异步:用户线程发起IO请求后任需要继续执行,当内核IO操作完成后会通知用户线程,或者调用用户注册的回调函数。
lexingsen
2022/02/25
2.2K0
深入理解--异步和非阻塞同步和阻塞异步和非阻塞
异步和非阻塞的概念实际上已经出现了很长一段时间。但是异步真正开始流行起来,是因为AJAX技术逐渐成为主流的web开发技术。非阻塞的概念真正流行起来,是当java引入NIO,也可以称作非阻塞IO的API,开始走进主流的开发人员的视线,真正流行起来,也可以认为是node.js带来的。
desperate633
2018/08/22
1K0
阻塞与非阻塞的区别verilog_如何理解阻塞和非阻塞
阻塞就是干不完不准回来, 非阻塞就是你先干,我现看看有其他事没有,完了告诉我一声
全栈程序员站长
2022/09/16
2.3K0
同步与异步,阻塞和非阻塞
Java 中的 BIO、NIO 和 AIO 可以理解为是 Java 语言对操作系统的各种 IO 模型的封装。在使用这些 API 的时候,不需要关心操作系统层面的知识,也不需要根据不同操作系统编写不同的代码,只需要使用 Java 的 API 就可以了。
happyJared
2019/08/06
1.2K0
Java同步和异步,阻塞和非阻塞
同步是指: 发送方发出数据后, 等待接收方发回响应后才发下一个数据包的通讯方式. 就是在发出一个调用时, 在没有得到结果之前, 该调用就不返回, 但是一旦调用返回, 就得到返回值了. 也就是由"调用者"主动等待这个"调用"的结果.
烟草的香味
2019/10/22
5.5K0
Linux编程(阻塞和非阻塞IO)
Linux设备驱动中的阻塞和非阻塞I/0,简单来说就是对I/O操作的两种不同的方式,驱动程序可以灵活的支持用户空间对设备的这两种访问方式。
用户2617681
2019/08/08
5.6K0
同步、异步、阻塞、非阻塞
同步与异步是针对应用程序与内核的交互而言的。同步过程中进程触发IO操作并等待或者轮询的去查看IO操作是否完成。异步过程中进程触发IO操作以后,直接返回,做自己的事情,IO交给内核来处理,完成后内核通知进程IO完成。
菲宇
2019/06/13
3K0
同步/异步,阻塞/非阻塞
什么是同步和异步 同步和异步是针对应用程序和内核的交互而言的, 同步指的是用户进程触发IO操作并等待或者轮询的去查看IO操作是否就绪,而异步是指用户进程触发IO操作以后便开始做自己的事情,而当IO操作已经完成的时候会得到IO完成的通知。 什么是阻塞和非阻塞 阻塞和非阻塞是针对于进程在访问数据的时候,根据IO操作的就绪状态来采取的不同方式,阻塞方式下读取或者写入函数将一直等待,而非阻塞方式下,读取或者写入函数会立即返回一个状态值。 同步/异步与阻塞/非阻塞的区别 同步与异步:针对数据访问的方式,程序是主动去询
欠扁的小篮子
2018/04/11
3.2K0
阻塞 & 非阻塞 | 同步 & 异步
一个典型的IO操作包括了两个阶段,数据准备和数据读写。比如说现在要使用 recv 执行一个读操作,数据就绪就是远端是否有数据可读。
看、未来
2021/10/09
2.9K0
阻塞 & 非阻塞 | 同步 & 异步
从事件调度理解阻塞和非阻塞
我们知道Verilog是一种并行编程语言,然而Verilog是通过计算机执行的,那么必然要遵循计算机顺序执行的逻辑
行走的BUG永动机
2022/08/14
4730
同步 异步 阻塞 非阻塞
同步和阻塞完全不是一件事,是否同步指的是获取返回结果的方式,是否阻塞指的是等待获取结果的时间内是否可以干其他事情
东营浪人
2019/12/20
2.7K0
同步、异步、阻塞、非阻塞
同步、异步、阻塞和非阻塞(网络编程) 同步 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。 按照这个定义,其实绝大多数函数都是同步调用(例如sin, isdigit等)。但是一般而言,我们在说同步、异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任务。最常见的例子就是 SendMessage。该函数发送一个消息给某个窗口,在对方处理完消息之前,这个函数不返回。当对方处理完毕以后,该函数才把消息处理函数所返回的 LRESULT值返回给调用者。 异步 异步的概念和同步相对。当
张俊怡
2018/04/24
2.2K0
阻塞队列与非阻塞队列
Java提供很多线程安全的容器,为开发人员在并发编程场景下使用,通常我们会更加关注业务实现,而不关心底层结构。但我们应该理解这些容器的原理和使用场景,以方便我们的开发和遇到问题的分析,并且有时候也能借鉴一下大神们的实现思想。
搬砖俱乐部
2019/06/15
3.2K0
同步异步阻塞非阻塞详解
同步就是一个调用方发出请求开始,就一直处于等待状态,等待请求结果返回后才能继续执行其他任务。比如说调用一个函数,等待函数结果返回,这叫同步。
opencode
2022/12/26
2K0
IO - 同步,异步,阻塞,非阻塞
同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchronous IO和non-blocking IO是一个东西。这其实是因为不同的人的知识背景不同,并且在讨论这个问题的时候上下文(context)也不相同。所以,为了更好的回答这个问题,我先限定一下本文的上下文。 本文讨论的背景是Linux环境下的network IO。 本文最重要的参考文献是Richard Stevens的“UNIX® Network Programming Volume 1, Third Edition: The Sockets Networking ”,6.2节“I/O Models ”,Stevens在这节中详细说明了各种IO的特点和区别,如果英文够好的话,推荐直接阅读。Stevens的文风是有名的深入浅出,所以不用担心看不懂。本文中的流程图也是截取自参考文献。
后端技术探索
2018/08/09
2.2K0
同步、异步与阻塞、非阻塞
  同步和异步关注的是消息通信机制。同步就是在发出一个【调用】时,在没有拿到结果之前,该【调用】就不返回,但是一旦调用返回,就得到返回值了。
py3study
2020/01/16
2.1K0
浅析同步异步阻塞非阻塞
企鹅号小编
2018/01/09
2K0
浅析同步异步阻塞非阻塞
同步、异步与阻塞、非阻塞
同步与异步是基于消息和通信的概念。异步操作立即返回,操作完成后通知,而同步操作等待操作完成才返回(返回就相当于完成通知,也意味着没有通知)。
gojam
2019/11/11
1.5K0
IO - 同步,异步,阻塞,非阻塞
同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchronous IO和non-blocking IO是一个东西。这其实是因为不同的人的知识背景不同,并且在讨论这个问题的时候上下文(context)也不相同。所以,为了更好的回答这个问题,我先限定一下本文的上下文。 本文讨论的背景是Linux环境下的network IO。 本文最重要的参考文献是Richard Stevens的“UNIX® Network Programming Volume 1, Third Edition: The Sockets Networking ”,6.2节“I/O Models ”,Stevens在这节中详细说明了各种IO的特点和区别,如果英文够好的话,推荐直接阅读。Stevens的文风是有名的深入浅出,所以不用担心看不懂。本文中的流程图也是截取自参考文献。
后端技术探索
2018/08/09
1.9K0

相似问题

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

15

非阻塞I/O问题

31

阻塞和非阻塞I/O之间的灰色地带?

10

Kotlin:用非阻塞I/O阻塞协同线

21

何时使用非阻塞I/O?

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文