NIO(一)——阻塞/非阻塞/同步/异步/NIO/select/epoll基本概念

本文介绍了IO的分类,特别是网络IO,重点讨论了阻塞与非阻塞、同步与异步的区别,并详细解析了BIO、NIO和AIO的工作机制。特别提到了NIO的同步非阻塞特性,以及NIO中select和epoll的选择器机制,阐述了epoll相对于select的优势。
摘要由CSDN通过智能技术生成

下面是我对NIO的一些想法,难免会与有理解上的偏差,因此还望各位大神能指点一二,感激不尽!

IO一般指的是内核与外部进行数据交互的所发生的事情。典型分为网络IO(socket),磁盘IO(文件),管道IO(pipe)等几类。我们将主要介绍网络IO这一部分。
一, 阻塞/非阻塞/同步/异步
谈及网络IO,都会谈到阻塞,非阻塞,同步,异步这几个概念。我们先从IO的过程讲起。
IO主要分两步:1)数据准备阶段;2)数据操作阶段(或称为IO操作阶段)。这里面涉及两个系统对象,一个是调用该IO的进程(或线程),另一个是系统内核。举例讲read()函数分两步,第一步等待数据准备好,第二步将数据从内核拷贝到用户进程。这两个步骤非常重要,因为所谓的阻塞,非阻塞,同步,异步都是针对这两个步骤来说的。
先上一张图,这张图是讲的read这个调用所可能的情况。
这里写图片描述

详细分析见
http://blog.csdn.net/histor

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值