使用epoll_create1()而不是epoll_create()有什么好处?

前端之家收集整理的这篇文章主要介绍了使用epoll_create1()而不是epoll_create()有什么好处?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在重写多线程 Linux-2.6.32应用程序,用 epoll替换 select.

epoll_create1(2)的手册页声明:

If flags is 0,then,other than the fact that the obsolete size argument is dropped,epoll_create1() is the same as epoll_create().

然而,epoll_wait(2)中使用的这个过时的大小参数不是maxevents吗?

epoll_wait(int epfd,struct epoll_event *events,int maxevents,int timeout);

这意味着在使用epoll时我们可以避免在epoll_create1中声明最大事件数,但是在调用epoll_wait时我们迟早要引用它?如果是这样,将epoll_create1带入游戏的重点是什么?

感谢您对此主题的启发.

解决方法

不,使用epoll_wait,maxevents会告诉您将返回的最大事件数.它与内核中维护的数量无关.

旧版本的epoll_create使用大小来设置某些限制,但不再使用它,因此注释size参数已过时.

使用epoll_create1的优点是它允许你指定标志,我认为这些标志目前仅限于close-on-exec(因此在执行另一个进程时文件描述符会自动关闭).

猜你在找的C&C++相关文章