
多路复用
文章平均质量分 65
陈海平20220310
写不了一点
展开
-
多路复用之select
头文件 #include <sys/select.h> 函数原型 int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout) 函数作用:监控指定描述符集合中哪些描述符可不可以做相应的操作(读/写)或是否有异常。 函数参数: ① nfds:最大的描述符+1。给select指定关心描述符的最大范围。 ② readfds:是否有数据可读。 ③ writefds原创 2022-03-11 10:58:56 · 290 阅读 · 0 评论 -
I/O操作和多路复用select、poll、epoll机制的对比
四个I/O概念(阻塞、非阻塞、同步、异步) ① 阻塞:调用函数。函数没有接收完数据或没有得到结果前,就不会返回。(调用结果返回之前,当前线程会被挂起,进入非可执行状态) 例:Linux中默认所有的socket都是阻塞的。 当用户进程调用了 read()/recvfrom() 等系统调用函数,首先会进入内核空间中。当这个网络I/O没有数据的时候,内核就要等待数据的到来。而在用户进程这边,整个进程会被阻塞,直到内核空间返回数据。 当内核空间的数据准备好了,它就会将数据从内核空间中拷贝到用户空间,此时用户进程才解原创 2022-03-10 21:20:00 · 229 阅读 · 0 评论 -
多路复用之epoll
简介 epoll 是Linux平台下的一种特有的多路复用IO实现方式 使用说明: 头文件#include <sys/epoll.h> 创建epoll int epoll_create(int size); 函数作用:创建epoll句柄 函数参数: ① size:无作用,但是需要大于0. 函数返回值: 成功返回:非负文件描述符 失败返回:-1,并且将errno设置为指示错误。 向epoll添加文件句柄 long epoll_ctl(int epfd, int op, int fd,struct原创 2022-03-10 20:40:39 · 338 阅读 · 0 评论