嵌入式学习37-TCP并发模型-有限  2.IO模型:     1.阻塞IO:           没有数据到来时,可以让任务挂起                                                                                                        节省CPU资源开销,提高系统效率          2.非阻塞IO:            程序未接收到数据时一直执行        效率很低     3.异步IO              只能绑定一个文件描述符用来    读取数据     4.多路复用IO         select             1.select监听的集合中的文件描述符有  上限限制                                                                                                 

时间:2024-03-12 20:42:12

    3.epoll 
      int epoll_create(int size);
      功能:
          创建 一张 内核事件表
      参数:
        size:                                                                                                                                                           事件的 个数
      返回值:
        成功返回文件描述符
        失败返回-1 
    
      epoll_ctl 
      int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);
      功能:
              维护  epoll时间表
      参数:
        epfd:                                                                                                                                                           事件表  的文件描述符
        op:
            EPOLL_CTL_ADD   添加事件
                                                                                                                                                                       EPOLL_CTL_MOD   修改事件
                                                                                                                                                                       EPOLL_CTL_DEL   删除事件
        fd:
            操作 的文件描述符
        event:
            事件 对应的 事件 
        
        typedef union epoll_data {
            void        *ptr;
                int          fd;
            uint32_t     u32;
            uint64_t     u64;
        } epoll_data_t;

        struct epoll_event {
            uint32_t     events;      /* Epoll events */
            epoll_data_t data;        /* User data variable */
        };

      返回值:
        成功返回0 
        失败返回-1 

      epoll_wait 
      int epoll_wait(int epfd, struct epoll_event *events,
                      int maxevents, int timeout);
      功能:
        监听  事件表中  的  事件
      参数:
        epfd:                                                                                                                                                           文件描述符
        events:                                                                                                                                                           存放  实际产生事件  的数组空间 首地址
        maxevents:                                                                                                                                                           最多  存放事件  个数
        timeout:                                                                                                                                                           设定监听的时间(超过该时间  则不再监听
                         -1 一直监听直到有事件发生
      返回值:
        成功返回产生事件的文件描述符个数
        失败返回-1 
        如果时间达到  仍没有事件发生  返回0 

相关文章