在使用
前两个很明显。
默认情况下,此函数会阻塞直到事件处理完成,
uv_run
函数运行libuv中的事件循环时,有一个“mode”参数,其值如下:UV_RUN_DEFAULT
UV_RUN_ONCE
UV_RUN_NOWAIT
前两个很明显。
UV_RUN_DEFAULT
运行事件循环直到没有更多事件,UV_RUN_ONCE
处理循环中的单个事件。然而,UV_RUN_NOWAIT
似乎不是一个单独的模式,而是可以与其他两个值之一进行OR运算的标志。默认情况下,此函数会阻塞直到事件处理完成,
UV_RUN_NOWAIT
使其非阻塞,但我能找到的任何文档都止步于此。我的问题是,如果你以非阻塞方式运行事件循环,回调函数如何处理?
libuv事件模型是单线程的(反应器模式),因此我认为它需要阻塞才能调用回调函数,但如果主线程被占用,处理完事件后会发生什么?回调函数会被“排队”,直到libuv再次控制主线程吗?还是回调函数会在另一个线程上分派?