摘要: epoll是Linux特有的IO复用函数。它使用一组函数完成IO复用,而select和poll使用一个函数。 epoll不需要像select和poll那样每次调用都要重复传入文件描述符和事件集。但epoll在内核会使用一个额外的文件描述符,来标识内核中事件表。 epoll原理 epoll在内核维护一 阅读全文
posted @ 2020-08-29 00:39 细雨徐行 阅读(104) 评论(0) 推荐(0)
摘要: 承接上篇IO复用之select selet将描述符和事件分离,所以在select接口需要传入三个数组表示不同的事件集合。poll也是在一定时间内轮询所有的描述符,但它将事件和描述结合。 函数签名 #include <poll.h> int poll(struct pollfd *fds, nfds_ 阅读全文
posted @ 2020-08-29 00:17 细雨徐行 阅读(99) 评论(0) 推荐(0)
摘要: select 承接上篇socket基础编程模板 基础的socket,accept方式一次只能监听一个socket,为了监听多个链接的socket,最直观的方法就是把要监听的socket组成数组进行遍历。 select用fd_set来表示监听的socket集合。fd_set是一个数组,该数组的每个元素 阅读全文
posted @ 2020-08-28 23:56 细雨徐行 阅读(154) 评论(0) 推荐(0)
摘要: 网络编程的基础是基于socket编程。socket(TCP)编程基于固定编程模板 server端: socket(声明socket类型) bind(命令socket,绑定地址和端口) listen(创建监听队列) accept(从监听队列中返回estblished的链接,否则阻塞) client端: 阅读全文
posted @ 2020-08-28 23:20 细雨徐行 阅读(200) 评论(0) 推荐(0)
摘要: 动态规划之仓鼠吃豆子 【题目】m n的方格上,每一格存放一定数量的豆子,一只仓鼠从左下角一直吃到右上角,但仓鼠只能向右或向上走。那么仓鼠做多可以吃多少豆子? 【思路】因为仓鼠只能向左或者向上走,那么到达任意一点的豆子数量由两部分组成:该点本身的豆子beans(x,y),max{到达左边的豆子总数pa 阅读全文
posted @ 2019-12-05 01:41 细雨徐行 阅读(1329) 评论(0) 推荐(0)