在前述 API 方法中,只有 wait()
和 end()
方法属于阻塞运算,这些阻塞运算可能无限阻塞 main
应用。因此,如果您在顶层声明多个 graph,那么您需要以适当方式交织这些 API,以并行执行 graph,如下所示。
#include "project.h"
simpleGraph g1, g2, g3;
int main(void) {
g1.init(); g2.init(); g3.init();
g1.run(<num-iter>); g2.run(<num-iter>); g3.run(<num-iter>);
g1.end(); g2.end(); g3.end();
return 0;
}
注释: 每个 graph 都应在完成初始化 (
init
) 之后再启动 (run
)。并且,为了并行执行,必须先启动所有 graph (run
),然后才能有任何 graph 等待终止 (end
)。