|
@@ -0,0 +1,29 @@
|
|
|
|
+-module(ebb_par).
|
|
|
|
+-export([scatter/2, scatter/1,
|
|
|
|
+ parallel/2, parallel/1]).
|
|
|
|
+
|
|
|
|
+scatter(Task1, Task2) ->
|
|
|
|
+ flow_graph:parallel([Task1, Task2]).
|
|
|
|
+
|
|
|
|
+scatter([Task]) ->
|
|
|
|
+ Task;
|
|
|
|
+scatter(Tasks = [_|_]) ->
|
|
|
|
+ flow_graph:parallel(Tasks).
|
|
|
|
+
|
|
|
|
+parallel(Op1, Op2) ->
|
|
|
|
+ flow_graph:parallel([Op1, Op2]).
|
|
|
|
+
|
|
|
|
+parallel([Op]) ->
|
|
|
|
+ Op;
|
|
|
|
+parallel(Ops = [_|_]) ->
|
|
|
|
+ flow_graph:parallel(Ops).
|
|
|
|
+
|
|
|
|
+fanout(Op1, Op2) ->
|
|
|
|
+ flow_graph:pipe([flow_graph:route(1, [1, 1]),
|
|
|
|
+ flow_graph:parallel([Op1, Op2])]).
|
|
|
|
+
|
|
|
|
+fanout([Op]) ->
|
|
|
|
+ Op;
|
|
|
|
+fanout(Ops = [_|_]) ->
|
|
|
|
+ flow_graph:pipe([flow_graph:route(1, lists:duplicate(length(Ops), 1)),
|
|
|
|
+ flow_graph:parallel(Ops)]).
|