Tag: evented io

UV_RUN_NOWAIT模式如何在libuv中工作?

使用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 ,并且UV_RUN_NOWAIT使其无阻塞,但我可以在其上找到的任何文档都在那里结束。 我的问题是,如果你运行事件循环非阻塞,如何处理回调? libuv事件模型是单线程的(reactor模式),所以我假设它需要阻塞才能调用回调,但如果主线程被占用,事件处理后会发生什么? 在libuv再次控制主线程之前,回调是否会“排队”? 或者是否会在另一个线程上调度回调?