2.2 解决阻塞死等待的办法

2.2.1 阻塞死等待的缺点

2.2 解决阻塞死等待的办法  - 图1

2.2.2 办法一:非阻塞、忙轮询

2.2 解决阻塞死等待的办法  - 图2

  1. while true {
  2. for i in 流[] {
  3. if i has 数据 {
  4. 或者 其他处理
  5. }
  6. }
  7. }

2.2.3 办法二:select

2.2 解决阻塞死等待的办法  - 图3

select 代收员 比较懒,她只会告诉你快递到了,但是是谁到的,你需要挨个快递员问一遍。

  1. while true {
  2. select(流[]); //阻塞
  3. for i in 流[] {
  4. if i has 数据 {
  5. 或者 其他处理
  6. }
  7. }
  8. }

2.2.3 办法三:epoll

2.2 解决阻塞死等待的办法  - 图4

  1. while true {
  2. 可处理的流[] = epoll_wait(epoll_fd); //阻塞
  3. for i in 可处理的流[] {
  4. 或者 其他处理
  5. }
  6. }