digraph G {
atask [label="pop a task T from the queue"];
cond [label="is T a condition task?" shape=diamond color=black fillcolor=aquamarine style=filled];
atask->cond
invokeN [label="invoke(T)"]
invokeY [label="R = invoke(T)"]
enqueueR [label="enqueue the R-th successor of T"]
decrement [label="decrement strong dependencies of each successor of T by one"]
enqueueS [label="enqueue successors of zero strong dependencies"]
invokeN->decrement;
decrement->enqueueS;
invokeY->enqueueR;
cond->invokeY[style=dashed,label="yes"];
cond->invokeN[style=dashed,label="no"];
enqueueS->atask;
enqueueR->atask;
}
