epoll_wait() 事件缓冲区重置

epoll_wait() events buffer reset

epoll_wait() 的第二个参数是一个缓冲区大小 = sizeof (struct epoll_event) * 调用者期望(或监视)的事件总数(文件描述符)。在第一次传递给 epoll_wait() 之前,此缓冲区始终初始化为零。

对于以下代码片段

memset(&events[0], 0, maxEvents * sizeof (struct epoll_event))
do
{
    result = epoll_wait(epoll_fd, &events[0], maxEvents, timeout)
    if (result)
    {
        //process events
    }
} while (1)

每次处理完事件后重置事件缓冲区好不好epoll_wait() returns?

没有

更好的方法是修复代码中的错误。 epoll_wait 中的 result 不是布尔值。它是一个整数,指定在提供的缓冲区列表中填充了多少个缓冲区。

如果确保只读取那些,则根本不需要对缓冲区进行零初始化。