epoll_create和epoll_wait

时间:2012-03-06 02:46:24

标签: epoll

我想知道两个epoll API的参数。

  1. epoll_create(int size) - 在此API中,size定义为事件池的大小。但是,似乎有更多的事件比大小仍然有效。 (我把大小设置为2,强制事件池有3个事件......但它仍然有效!?)因此,我想知道这个参数实际意味着什么,并对这个参数的最大值感到好奇。

  2. epoll_wait(int maxevents) - 对于此API,maxevents定义是直截了当的。但是,我可以看到缺乏关于如何确定此参数的信息或建议。我希望根据epoll事件池大小的大小来更改此参数。任何建议或建议都会很棒。谢谢!

1 个答案:

答案 0 :(得分:1)

1

“man epoll_create”

DESCRIPTION
       ...
       The size is not the maximum size of the backing store but just a hint
       to the kernel about how to dimension internal structures.  (Nowadays,
       size is unused; see NOTES below.)

NOTES
       Since Linux 2.6.8, the size argument is unused, but must  be  greater
       than  zero.   (The  kernel dynamically sizes the required data struc‐
       tures without needing this initial hint.)

2

只需自己确定一个准确的数字,但请注意 给它一个小数字可能会略微降低效率。

因为分配给“maxevent”的数字越小,你就越需要调用epoll_wait()来消耗已经在epoll上排队的所有事件。