epoll相关资料整理

news/2024/7/9 17:05:08 标签: epoll
学习epoll有一段时间了,最近终于有一个服务器采用了epoll模型,从中积累了一些epoll的资料.个人感觉目前可以找到的epoll相关的资料太少了,因为epoll仅被linux 2.6以上版本内核所支持,它的应用时间还比较短暂, 而一些讲解网络编程的相关权威书籍(如已逝的stevens的UNP)都没有讲解这个不能跨unix平台的专有技术,而epoll带来的巨大效率提高又使得这项技术很有吸引力, 于是我决定将个人遇到的epoll相关问题整理一下, 随着对epoll的理解深入, 这份资料将不断的完善下去.

需要说明的是, 这份教材不适合网络编程的初学者, 这里假设读者具备一定的网络编程基础, 使用过多路复用IO如select等.

1) 能不能给一个使用epoll相关API进行IO监控的示例?
在<< epoll学习笔记 >>中有一个简单的示例说明epoll相关API的使用, 但是这个示例是非常简单的, 它仅仅关注于如何使用epoll相关函数上面, 如果要更好的使用epoll, 还需要自己动手以及阅读资料.

2) epoll和select都属于多路复用IO吗?与阻塞IO相比多路复用IO有什么优点?
在<<epoll为什么这么快 >>, 重点是解释epoll对比select在效率上提高的原因, 但是同时也解释了多路复用IO的工作原理.

3) epoll的ET模式和LT模型有什么区别?
<<epll学习笔记 >>通过一个实例说明了两者之间的差异, 但是我想, 如果结合着man文档(man epoll)来看效果会更好些.

4) 我的服务器是采用多进程模型的, 我的父进程首先创建了epoll所使用的fd, 然后再创建子进程, 为什么使用的时候没过多久epoll_wait函数就一直返回0, 这样IO事件就不会得到通知了?
太巧了, 笔者也遇到过类似的问题, 花了好几天的时间进行调试, 很幸运的是, 你不必像我这样耗费时间在这个问题上面了, 因为在<<多进程服务器中,epoll的创建应该在创建子进程之后 >>中已经有了解答.

5)epoll的效率比起select来有很大的提高, 这里面有什么秘密吗?
其实原理很简单, 就是计算机世界中"空间换时间"思想的体现, 在<<epoll为什么这么快 >>中有详细的解释.

http://www.niftyadmin.cn/n/1134537.html

相关文章

mysql中的LAST_INSERT_ID()分析

2019独角兽企业重金招聘Python工程师标准>>> 注&#xff1a; 用PHP调用mysql &#xff0c; 内置的LAST_INSERT_ID() 这个函数可能没有什么人用&#xff0c;用的最多的还是 mysql_insert_id();其实&#xff0c;这两个是有区别的&#xff0c;LAST_INSERT_ID() 能返回 …

计算机本地用户名称怎么改win10系统,win10系统如何设置本地账户用户名

一位用户反馈自己想要在新装的Windwos10正式版系统中更改本地账户用户名&#xff0c;可是由于对新系统太过陌生&#xff0c;总是找不到正确的操作方法。这该怎么办呢&#xff1f;为了帮助大家更好地使用win10&#xff0c;下面小编就分享更改本地账户用户名的具体步骤。技巧一&a…

Vs2019通过后台方式启动一个控制台程序(隐藏黑色窗口)

在文件头部添加一行代码&#xff1a; #pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) 用于笔记&#xff0c;原理不解释了。 #include <iostream> #include <windows.h> #include <cstdio>…

jsp上传图片问题

2019独角兽企业重金招聘Python工程师标准>>> <form method"POST" id"img_form" enctype"multipart/form-data"><input type"file" name"file"> //这里面的name一定要写否则无法上传图片 </form&…

浅谈Java多线程的同步问题

多线程的同步依靠的是对象锁机制&#xff0c;synchronized关键字的背后就是利用了封锁来实现对共享资源的互斥访问。 下面以一个简单的实例来进行对比分析。实例要完成的工作非常简单&#xff0c;就是创建10个线程&#xff0c;每个线程都打印从0到99这100个数字&#xff0c;我们…

SSMS错误代码大全

0 操作成功完成。 1 功能错误。 2 系统找不到指定的文件。 3 系统找不到指定的路径。 4 系统无法打开文件。 5 拒绝访问。 6 句柄无效。 7 存储控制块被损坏。 8 存储空间不足&#xff0c;无法处理此命令。 9 存储控制块地址无效。 10 环境错误。 11 试图加载格式错误的程序。 …

1.1顺序结构->简单(平均分)

#include<iostream> #include<cstdio> #include<cstdlib> using namespace std; int main() {int a,b,c;cin>>a>>b>>c;double n;n(abc)/3.0;// n(int)(n*100.0)/100.0;printf("%0.2f\n",n);return 0; }

把html打包成exe,html 封装成exe(HTML网页课件打包器)

这觉得与期说是HTML网页课件打包器还不如叫html文件转换器&#xff0c;他的主要作用就是将多个html批量的生成exe文件&#xff0c;这用有利于我携带。例如&#xff1a;做了一本html 格式的小说&#xff0c;现在需要一个将其封装为exe格式的软件。此时我们就可以使用本工具&…