多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 2.2 解决阻塞死等待的办法 ### 2.2.1 阻塞死等待的缺点 ![](https://img.kancloud.cn/0e/e6/0ee6d2dc2ccd0372316093371b46f324_651x407.png) ### 2.2.2 办法一:非阻塞、忙轮询 ![](https://img.kancloud.cn/32/1f/321f3bc980fe11597174562bcb0f6605_629x417.png) ```cpp while true { for i in 流[] { if i has 数据 { 读 或者 其他处理 } } } ``` ### 2.2.3 办法二:select ![](https://img.kancloud.cn/ee/43/ee430296183245bb677144388a458f5e_675x410.png) select 代收员 比较懒,她只会告诉你快递到了,但是是谁到的,你需要挨个快递员问一遍。 ```cpp while true { select(流[]); //阻塞 for i in 流[] { if i has 数据 { 读 或者 其他处理 } } } ``` ### 2.2.3 办法三:epoll ![](https://img.kancloud.cn/f5/44/f544de1b2d23e9d5e101970d2fd0e2aa_710x371.png) ```cpp while true { 可处理的流[] = epoll_wait(epoll_fd); //阻塞 for i in 可处理的流[] { 读 或者 其他处理 } } ```