read和write阻塞和非阻塞方面的理解
首先,如果阻塞模式
read如果有足够的数据,读到要求字节数,否则返回实际读到的字节数,如果到文件尾,阻塞,直接接收缓冲区有数据,读取并返回实际字节数
write阻塞模式下需要把固定字节数的字节全部复制到内核缓冲区才返回,而且是需要内核缓冲区有那么大的空间再一次性复制过去
非阻塞模式
read别的和阻塞一样,唯一不一样的是如果接收缓冲区没有数据,直接返回并且errorno是EAGAIN也就是本应该是阻塞的情况
write别的和阻塞一样,不一样的是不需要等待足够空间,有多少空间就复制多少到内核缓冲区并且返回实际大小
所以,在阻塞模式下read是需要循环读取的,并且判断返回值。而write不用,因为其会等待固定大小缓冲区再解阻塞。
在非阻塞模式下,read也需要循环读取,并且忽略EAGAIN,而write也需要循环写。

read和write阻塞和非阻塞方面的理解相关推荐

  1. 同步与异步,阻塞与非阻塞的区别

    1.概念剖析 相信很多从事linux后台开发工作的都接触过同步&异步.阻塞&非阻塞这样的概念,也相信都曾经产生过误解,比如认为同步就是阻塞.异步就是非阻塞,下面我们先剖析下这几个概念分 ...

  2. 创业笔记-Node.js入门之阻塞与非阻塞

    阻塞与非阻塞 正如此前所提到的,当在请求处理程序中包括非阻塞操作时就会出问题.但是,在说这之前,我们先来看看什么是阻塞操作. 我不想去解释"阻塞"和"非阻塞"的 ...

  3. setstate是同步还是异步_【vert.x准备篇1】同步和异步,阻塞和非阻塞概念澄清

    为了能更好的理解vert.x的线程模型,我们必须要先明确几个概念:同步(Synchronous)和异步(Asynchronous),阻塞(Blocking)和非阻塞(Non-Blocking).关于这 ...

  4. 那些年让你迷惑的阻塞、非阻塞、异步、同步

    点击上方"方志朋",选择"置顶或者星标" 你的关注意义重大! 在IT圈混饭吃,不管你用什么编程语言.从事前端还是后端,阻塞.非阻塞.异步.同步这些概念,都需要清 ...

  5. 这次,让我们捋清:同步、异步、阻塞、非阻塞

    继上一篇说透I/O模型后,我们来谈谈网络 I/O 经常会伴随的几个容易令人混淆的概念:同步.异步.阻塞.非阻塞的区别. 这篇写完之后铺垫就差不多了,之后就正式开始 Netty 深度剖析了,敬请期待,嘻 ...

  6. 阻塞、非阻塞、多路复用、同步、异步、BIO、NIO、AIO 一锅端

    承接上文的操作系统,关于IO会涉及到阻塞.非阻塞.多路复用.同步.异步.BIO.NIO.AIO等几个知识点.知识点虽然不难但平常经常容易搞混,特此Mark下,与君共勉. 1 阻塞跟非阻塞 1.1 阻塞 ...

  7. 并发、并行、串行、同步、异步、阻塞、非阻塞

    并发.并行.串行.同步.异步.阻塞.非阻塞 实际上同步与异步是针对应用程序与内核的交互而言的. 同步过程中进程触发IO操作并等待(也就是我们说的阻塞)或者轮询的去查看IO操作(也就是我们说的非阻塞)是 ...

  8. 【NIO】阻塞与非阻塞

    "阻塞"与"非阻塞"与"同步"与"异步"不能简单的从字面理解,提供一个从分布式系统角度的回答. 1.同步与异步 同步和异 ...

  9. 阻塞与非阻塞的IO网络读写

    看我之前的文章就知道,一般对于网络读的socket,都会加上O_NONBLOCK,非阻塞的选项. int setnonblocking(int fd) {int old_option = fcntl( ...

  10. Socket阻塞,非阻塞,同步,异步

    1.socket 阻塞,非阻塞(select) http://blog.csdn.net/piaojun_pj/article/details/5991968/ http://blog.chinaun ...

最新文章

  1. 物理机存放mysql实例原则_MySQL数据库规范 (设计规范+开发规范+操作规范)
  2. 覆盖你 80 % 网络生活的,竟是这样一家神秘实验室
  3. QT5实践:如何应用窗口菜单
  4. 【CentOS Linux 7】实验2【Shell编程及应用】
  5. 后端程序员转行前端,强烈推荐这6个前端UI框架,第二款小程序UI框架颜值最高!...
  6. python语言属于哪一种语言_Python与Java:你应该学习哪种语言,他们有什么区别?...
  7. centos设置ip
  8. Mysql 替换字段的一部分内容
  9. Protocol Buffer 序列化
  10. 洛克王国进不去 不显示服务器,《洛克王国》FAQ:注册和登陆问题
  11. php fpm www.conf,PHP7中php.ini、php-fpm和www.conf 配置
  12. 读《大道至简》第四章有感
  13. SpringCloud微框架系列整体模块梳理
  14. Facebook开源多款AI工具,支持游戏、翻译
  15. Linux编译安装qemu
  16. matlab meshlab,MeshLab下载
  17. 服务器 虚拟软驱,virtual floppy(虚拟软驱)命令行版本
  18. 服务注册与发现-Spring Cloud Netflix-Eureka
  19. 如何爬取B站视频的封面图片
  20. 健身为什么要吃肌酸!肌酸四大作用

热门文章

  1. 8cm等于多少像素_PPT尺寸你们都设置成多少(我问的不是分辨率像素,而是长、高尺寸)?...
  2. VMware 安装失败failed to install the hcmon driver (win10)
  3. 内存管理-之启动-基于linux3.10
  4. 介绍一款 微信客服平台系统
  5. mysql中floor的用法_Mysql报错注入之floor报错详解
  6. 传感器与检测技术基础知识(4)—— 电阻式传感器
  7. 寒假训练1—H(第一次写出结构体数组)
  8. 益聚星荣:如何有理有据地给元宇宙泼一盆冷水?
  9. socket多线程图形化界面聊天室实例
  10. FATAL: kernel too old