随笔分类 -  Linux高性能服务器编程

摘要:前面我们讨论了select、poll和epoll三组I/O复用系统调用,这三组系统调用都能同时监听多个文件描述符。它们将等待由timeout参数指定的超时时间,直到一个或多个文件描述符上有事件发生时返回,返回值是就绪的文件描述符的数量。返回0表示没有事件发生。现在我们从事件集、最大支持文件描述符数、 阅读全文
posted @ 2023-06-04 20:42 韓さん 阅读(18) 评论(0) 推荐(0) 编辑
摘要:即使我们使用ET模式,一个socket上的某个事件还是可能被触发多次,这在并发程序中就会引起一个问题,比如一个线程在读取某个socket上的数据后开始处理这些数据,而在数据的处理过程中该socket上又有新的数据可读,此时另外一个线程被唤醒来读取这些新的数据,于是就出现两个线程同时操作一个socke 阅读全文
posted @ 2023-06-04 20:28 韓さん 阅读(297) 评论(0) 推荐(0) 编辑
摘要:epoll: epoll是Linux特有的IO复用函数,被认为性能最好的一种方法,它和select、poll在实现和使用上有很大差异:1.使用一组函数来完成,而不是单个2.把用户关心的文件描述符上的事件放在内核的一个事件表中,无须向select、poll那样每次调用都要重复传入文件描述符集或事件集, 阅读全文
posted @ 2023-06-03 23:01 韓さん 阅读(58) 评论(0) 推荐(0) 编辑
摘要:select:select系统调用的用途是:在一段指定时间内,监听用户所感兴趣的文件描述符上的可读、可写和异常事件缺点:1.所能监视的文件描述符的数量有限制,sizeof(fd_set)=128,说明能监视的描述符的最大值为128*8=1024个;2.同时每次调用select都需要在内核遍历传递进来 阅读全文
posted @ 2023-06-03 20:29 韓さん 阅读(61) 评论(0) 推荐(0) 编辑
摘要:poll:poll系统调用和select类似,也是在指定时间内轮询一定数量的文件描述符,以测试其中是否有就绪的文件描述符。优点:1.相比select来讲,它没有fd数量的限制,理论上打开fd的数目跟系统内在有关;2.也不用每次都把fd集合从用户区拷贝数据到内核,它使用一个 struct pollfd 阅读全文
posted @ 2023-06-03 16:01 韓さん 阅读(61) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示