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
不是布尔值。它是一个整数,指定在提供的缓冲区列表中填充了多少个缓冲区。
如果确保只读取那些,则根本不需要对缓冲区进行零初始化。
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
不是布尔值。它是一个整数,指定在提供的缓冲区列表中填充了多少个缓冲区。
如果确保只读取那些,则根本不需要对缓冲区进行零初始化。