# 2.1 流-IO操作-阻塞

## 2.1 流？I\\/O操作\\/阻塞

### 2.1.1 流

* 可以进行I\\/O操作的内核对象
* 文件、管道、套接字……
* 流的入口：文件描述符(fd)

## 2.1.2 I\\/O操作

![](https://933560069-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lce3jcJHmjGq8-Jh2Le%2F-Lce3nJKdTRiZ8w-h6L1%2F-Lce3pmOV5hIDdJGCrnp%2Flibevent-2-io%E6%93%8D%E4%BD%9C01.png?generation=1555484083734052\&alt=media)

![](https://933560069-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lce3jcJHmjGq8-Jh2Le%2F-Lce3nJKdTRiZ8w-h6L1%2F-Lce3pmQ7xsWr57LW95I%2Flibevent-2-io%E6%93%8D%E4%BD%9C02.png?generation=1555484082388501\&alt=media)

所有对流的读写操作，我们都可以称之为IO操作。

> ### 那么当一个流中再没有数据，read的时候，或者说在流中已经写满了数据，再write，我们的IO操作就会出现一种现象，就是阻塞现象。

## 2.1.2 阻塞

![](https://933560069-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lce3jcJHmjGq8-Jh2Le%2F-Lce3nJKdTRiZ8w-h6L1%2F-Lce3pmSmIF5nvbfutUn%2Flibevent-2-%E9%98%BB%E5%A1%9E01.png?generation=1555484081972921\&alt=media)

![](https://933560069-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lce3jcJHmjGq8-Jh2Le%2F-Lce3nJKdTRiZ8w-h6L1%2F-Lce3pmULP076X6dc622%2Flibevent-2-%E9%98%BB%E5%A1%9E02.png?generation=1555484082076688\&alt=media)

* 阻塞等待

空出大脑可以安心睡觉。（不占用CPU宝贵的时间片）

* 非阻塞，忙轮询

浪费时间，浪费电话费，占用快递员时间（占用CPU，系统资源）
