Skip to content

Latest commit

 

History

History
52 lines (37 loc) · 895 Bytes

21-解决阻塞死等待的办法.md

File metadata and controls

52 lines (37 loc) · 895 Bytes

2.2 解决阻塞死等待的办法

2.2.1 阻塞死等待的缺点

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

while true {
    for i in 流[] {
        if i has 数据 {
            读 或者 其他处理
        }
    }
}

2.2.3 办法二:select

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

while true {
    select(流[]);  //阻塞

    for i in 流[] {
        if i has 数据 {
            读 或者 其他处理
        }
    }
}

2.2.3 办法三:epoll

while true {
    可处理的流[] = epoll_wait(epoll_fd);  //阻塞

    for i in 可处理的流[] {
        读 或者 其他处理
   }
}