假设有4个任务T1
,T2
,T3
,T4
。它们被链接在一起T1.si() | T2.si() | T3.si() | T4.si()
。 T3
与T30 .. T3n
异步生成进一步的任务chord(T30,...,T3n)(reduce.s())
。我事先并不知道n
(即产生的子任务T3i
没有)。
我希望T4
仅在完成所有T3i..T3n
任务后执行。正如预期的那样,由于异步行为,T3
立即返回,然后T4在和弦完成之前开始执行。
我可以在T3.get()
之前添加一个只执行T4
的同步任务,但它会阻止其中一个工作进程。
有没有办法修复此设计以避免阻塞任务或更好的设计?
答案 0 :(得分:1)
我会稍微提高@ jenner-felton的评论......
您可以这样称呼:
chain(T1.s(), T2.s(), T3.s(T4.s()))
e.g。 T4.s()
作为参数之一传递给T3任务。
T3将自行运行chord
,并将T4作为回调传递。