作业:针对前三种IO模型分析的博文,发布带CSDN
1.非阻塞IO:适用于在程序中读取硬件数据时,同时处理其他的请求,不会导致函数阻塞。
2.阻塞IO:在应用程序中读取硬件数据时,如果有的硬件数据没有准备好则可以将进程切换到休眠状态,直到准备就绪再将程序唤醒。其中休眠状态分为不可中断休眠态和可中断休眠态。
3.IO多路复用:需要在一个进程中同时监听多个硬件数据,无论需要哪种硬件数据都能随时监听调用,只要有硬件数据准备好了就可以对硬件数据进行读写等操作。其中,IO多路复用的实现机制有三种:select/poll/epoll。
而epoll的使用可谓是重中之重,其中的核心操作可以概括为一棵树、一张表和三个接口。而其中需要用到的函数分别为:int epoll_create(int size)(功能:创建一个新的epoll)、int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event)(功能:进行epoll管理)、int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout)(功能:阻塞等待事件发生)。