uv_run永远回归成功

时间:2016-09-17 21:35:55

标签: libuv

我尝试运行以下代码,并且该函数在第一次接收后继续返回0:

while (true)
{
    int res = uv_run(uv_default_loop(), UV_RUN_ONCE);
    if (res == 0)
        printf("ok\n");
}

有没有办法重置循环,以便它在第二次接收时返回0,并且不会从第一次接收成功?

1 个答案:

答案 0 :(得分:1)

  

uv_run永远让你的成功回归

在这种情况下,0并不代表成功 如上所述uv_run UV_RUN_DEFAULT(强调我的):

  

UV_RUN_ONCE:轮询i / o一次。请注意,如果没有挂起的回调,此函数将阻止。 完成后返回零(没有活动句柄或请求),如果预期会有更多回调,则返回非零值(意味着您应该在将来的某个时间再次运行事件循环)。

如果至少存在一个回调,则函数调用不会阻塞并执行它们,然后它将返回。它仅针对I / O进行一次轮询,它就是为了这个而且你要问 - 它是否可能使它的工作方式不同于它的意思?嗯,没有。
改为使用entry_func并在完成后关闭所有句柄,以便循环结束并返回函数调用。