|
@@ -2,7 +2,7 @@
|
|
|
|
|
|
-export([start_link/3, start_link/4, stop/1]).
|
|
-export([start_link/3, start_link/4, stop/1]).
|
|
|
|
|
|
--export([worker/3, worker/4]).
|
|
|
|
|
|
+-export([worker/3, worker/5]).
|
|
|
|
|
|
start_link(Func, Args, Receiver) ->
|
|
start_link(Func, Args, Receiver) ->
|
|
try
|
|
try
|
|
@@ -15,11 +15,11 @@ start_link(Func, Args, Receiver) ->
|
|
|
|
|
|
start_link(distributed, Func, Args, Receiver) ->
|
|
start_link(distributed, Func, Args, Receiver) ->
|
|
Node = ebb_work_manager:available_node(),
|
|
Node = ebb_work_manager:available_node(),
|
|
- start_link(Node, Func, Args, Receiver);
|
|
|
|
-start_link(Node, Func, Args, Receiver) ->
|
|
|
|
|
|
+ start_link(node(), Node, Func, Args, Receiver).
|
|
|
|
+start_link(Root, Node, Func, Args, Receiver) ->
|
|
try
|
|
try
|
|
Result = spawn_link(Node, ?MODULE, worker,
|
|
Result = spawn_link(Node, ?MODULE, worker,
|
|
- [Node, Func, Args, Receiver]),
|
|
|
|
|
|
+ [Root, Node, Func, Args, Receiver]),
|
|
ebb_work_manager:start_work(Node),
|
|
ebb_work_manager:start_work(Node),
|
|
Result
|
|
Result
|
|
of
|
|
of
|
|
@@ -31,7 +31,7 @@ start_link(Node, Func, Args, Receiver) ->
|
|
worker(Func, Args, Receiver) ->
|
|
worker(Func, Args, Receiver) ->
|
|
ebb_event:return(Receiver, apply(Func, Args)).
|
|
ebb_event:return(Receiver, apply(Func, Args)).
|
|
|
|
|
|
-worker(Node, Func, Args, Receiver) ->
|
|
|
|
|
|
+worker(Root, Node, Func, Args, Receiver) ->
|
|
Ref = make_ref(),
|
|
Ref = make_ref(),
|
|
io:format("~p ~p: Worker thread started~n", [Node, Ref]),
|
|
io:format("~p ~p: Worker thread started~n", [Node, Ref]),
|
|
{_, _, Start} = erlang:now(),
|
|
{_, _, Start} = erlang:now(),
|
|
@@ -39,7 +39,7 @@ worker(Node, Func, Args, Receiver) ->
|
|
{_, _, Finish} = erlang:now(),
|
|
{_, _, Finish} = erlang:now(),
|
|
io:format("~p ~p: Worker thread finished, time ~p~n",
|
|
io:format("~p ~p: Worker thread finished, time ~p~n",
|
|
[Node, Ref, Finish-Start]),
|
|
[Node, Ref, Finish-Start]),
|
|
- ebb_work_manager:work_finished(Node).
|
|
|
|
|
|
+ ebb_work_manager:work_finished(Root, Node).
|
|
|
|
|
|
stop(Worker) ->
|
|
stop(Worker) ->
|
|
exit(Worker, kill).
|
|
exit(Worker, kill).
|