假设我们从TCP套接字接收数据,并逐步处理以获取结果。每个步骤都作为一个函数实现,该函数从前一个任务参数返回到下一个结果。我们将所有这些函数链接为回调链,并将每个函数命名为 f1 f2 ... fn 。
此回调链中没有块函数,每个回调运行得非常快。但是,整个链的运行时间不可忽略,因此不接受在单循环迭代中运行整个链。
只需在一个回调链中链接这些函数,它就会运行:
col-xs-6
最好将这个链分成许多部分,并在一个循环迭代中运行每个部分。这看起来像:
data -> f1 -> f2 -> f3 -> f4 -> f5 ->... -> fn -> result
|------- single loop iteration -------|
我知道在Twisted中,存在一个 deferred()来执行这样的任务。但是,在libuv中,该怎么做?
答案 0 :(得分:0)
libuv没有内置API来执行此操作。你确实有一些构建块:你可以创建某种“链”结构,记住状态,并在uv_idle_t
中运行它。请注意,空闲句柄可防止循环在活动时阻塞i / o。