做网站软文怎么弄,高端建站是什么,静态网站 挂马,移动互联网开发试卷思路一#xff1a;多线程并发
缺点#xff1a;资源浪费过大#xff0c;且能实现的并发量有限。
思路二#xff1a;IO通信
1.阻塞IO
没有任务时#xff0c;挂起任务#xff0c;节省资源#xff0c;提高效率
2.非阻塞IO
未收到数据时一直执行#xff0c;效率很低
…思路一多线程并发
缺点资源浪费过大且能实现的并发量有限。
思路二IO通信
1.阻塞IO
没有任务时挂起任务节省资源提高效率
2.非阻塞IO
未收到数据时一直执行效率很低
3.异步IO
只能绑定一个文件描述符来读取数据
4.多路复用IO 4.1.select int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); 功能: select监听文件描述符集合中是否有文件描述编程ready状态 功能: nfds:最大文件描述符的值1 readfds:读文件描述符集合 writefds:写文件描述符集合 exceptfds:其余文件描述符集合 timeout:等待的时长 NULL 一直等待 返回值: 成功返回文件描述符集合中的文件描述符个数 失败返回-1 void FD_CLR(int fd, fd_set *set); 功能: 将文件描述符fd从集合中清除 int FD_ISSET(int fd, fd_set *set); 功能: 判断文件描述符fd是否仍在集合中 void FD_SET(int fd, fd_set *set); 功能: 将文件描述符fd加入到集合中 void FD_ZERO(fd_set *set); 功能: 将文件描述符集合清0
4..poll int poll(struct pollfd *fds, nfds_t nfds, int timeout); 功能: 监听文件描述符集合是否有事件发生 参数: fds:监听文件描述符集合数组空间首地址 nfds:监听文件描述符集合元素个数 timeout:等待的时间-1 一直等待 返回值: 成功返回产生事件的文件描述符个数 失败返回-1 struct pollfd { int fd; /* file descriptor */ short events; /* requested events */ short revents; /* returned events */ }; fd:监听的文件描述符 events:要监听的事件 POLLIN:是否可读 POLLOUT:是否可写 revents:实际产生的事件 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:存放实 今日错误read有东西时才不会阻塞