【问题标题】:epoll_wait() events buffer resetepoll_wait() 事件缓冲区重置
【发布时间】:2017-10-05 17:35:19
【问题描述】:

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

对于下面的代码sn-p

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()返回处理完事件后重新设置events缓冲区好不好?

【问题讨论】:

    标签: linux epoll


    【解决方案1】:

    没有。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多