关注公众号,一起交流 :潜行前行
基本概念介绍
在零拷贝机制篇章已介绍过 用户空间和内核空间和缓冲区,这里就省略了
网络IO的读写过程
linux五种网络IO模型
阻塞式I/O (blocking IO)
ssize_t recvfrom(int sockfd,void *buf,size_t len,unsigned int flags, struct sockaddr *from,socket_t *fromlen);
非阻塞式I/O (nonblocking IO)
多路复用I/O (IO multiplexing)
信号驱动式I/O (SIGIO)
异步IO (POSIX的aio_系列函数)
多路复用IO深入理解一波
select
int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
select的缺点
epoll
int epoll_create(int size);
int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);
int epoll_wait(int epfd, struct epoll_event *events,int maxevents, int timeout);
epoll的两种触发模式
epoll相比select的优点
关于epoll的IO模型是同步异步的疑问
Reactor模型
Reactor的中心思想是将所有要处理的I/O事件注册到一个中心I/O多路复用器上,同时主线程/进程阻塞在多路复用器上;一旦有I/O事件到来或是准备就绪,多路复用器返回,并将事先注册的相应I/O事件分发到对应的处理器中
相关概念介绍:
Reactor的一般流程
单线程 + Reactor
多线程 + Reactor
多线程 + 多个Reactor
Proactor模型的一般流程
Proactor和Reactor的区别
欢迎指正文中错误
参考文章
参考资料
日拱一卒,功不唐捐
本文分享自微信公众号 - 一个程序员的成长(xiaozaibuluo)。
如有侵权,请联系 [email protected] 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。