home
/
code
/
dups.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
2a390e5
)
Slightly refactor lord's and vassal's loops
author
Siraaj Khandkar
<siraaj@khandkar.net>
Wed, 28 Nov 2018 01:26:47 +0000
(20:26 -0500)
committer
Siraaj Khandkar
<siraaj@khandkar.net>
Wed, 28 Nov 2018 01:33:26 +0000
(20:33 -0500)
dups.ml
patch
|
blob
|
blame
|
history
diff --git
a/dups.ml
b/dups.ml
index
b83b4be
..
e214d25
100644
(file)
--- a/
dups.ml
+++ b/
dups.ml
@@
-285,31
+285,29
@@
end = struct
let lord t ~njobs ~vassals ~ic ~ocs =
let active_vassals = ref njobs in
let results = Queue.create () in
let lord t ~njobs ~vassals ~ic ~ocs =
let active_vassals = ref njobs in
let results = Queue.create () in
- let rec
dispatch
() =
+ let rec
loop
() =
match ((Ipc.recv ic) : ('input, 'output) msg_from_vassal) with
| Exiting i ->
close_out ocs.(i);
decr active_vassals;
match ((Ipc.recv ic) : ('input, 'output) msg_from_vassal) with
| Exiting i ->
close_out ocs.(i);
decr active_vassals;
- if !active_vassals = 0 then
- ()
- else
- dispatch ()
+ if !active_vassals = 0 then () else loop ()
| Ready i ->
Ipc.send ocs.(i) (Job (next t));
| Ready i ->
Ipc.send ocs.(i) (Job (next t));
-
dispatch
()
+
loop
()
| Result (i, result) ->
Queue.add result results;
Ipc.send ocs.(i) (Job (next t));
| Result (i, result) ->
Queue.add result results;
Ipc.send ocs.(i) (Job (next t));
-
dispatch
()
+
loop
()
in
let rec wait = function
in
let rec wait = function
- | [] -> ()
+ | [] ->
+ ()
| vassals ->
let pid, _process_status = Unix.wait () in
(* TODO: handle process_status *)
wait (List.filter vassals ~f:(fun p -> p <> pid))
in
| vassals ->
let pid, _process_status = Unix.wait () in
(* TODO: handle process_status *)
wait (List.filter vassals ~f:(fun p -> p <> pid))
in
-
dispatch
();
+
loop
();
close_in ic;
wait vassals;
of_queue results
close_in ic;
wait vassals;
of_queue results
@@
-317,15
+315,16
@@
end = struct
let vassal i ~f ~vassal_pipe_r ~lord_pipe_w =
let ic = Unix.in_channel_of_descr vassal_pipe_r in
let oc = Unix.out_channel_of_descr lord_pipe_w in
let vassal i ~f ~vassal_pipe_r ~lord_pipe_w =
let ic = Unix.in_channel_of_descr vassal_pipe_r in
let oc = Unix.out_channel_of_descr lord_pipe_w in
- let rec work msg =
- Ipc.send oc msg;
+ let rec loop () =
match (Ipc.recv ic : 'input msg_from_lord) with
| Job (Some x) ->
match (Ipc.recv ic : 'input msg_from_lord) with
| Job (Some x) ->
- work (Result (i, (x, f x)))
+ Ipc.send oc (Result (i, (x, f x)));
+ loop ()
| Job None ->
Ipc.send oc (Exiting i)
in
| Job None ->
Ipc.send oc (Exiting i)
in
- work (Ready i);
+ Ipc.send oc (Ready i);
+ loop ();
close_in ic;
close_out oc;
exit 0
close_in ic;
close_out oc;
exit 0
This page took
0.022406 seconds
and
4
git commands to generate.