一个程序员的成长

一个程序员的成长

  • 关注公众号,一起交流 :潜行前行

    基本概念介绍

    在零拷贝机制篇章已介绍过 用户空间和内核空间缓冲区,这里就省略了

    网络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的区别

    欢迎指正文中错误

    参考文章

    参考资料


    日拱一卒,功不唐捐


    框架篇:linux网络I/O+Reactor模型-LMLPHP


    本文分享自微信公众号 - 一个程序员的成长(xiaozaibuluo)。
    如有侵权,请联系 [email protected] 删除。
    本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

    03-07 18:19