summaryrefslogtreecommitdiff
path: root/otherlibs/threads/Tests/test8.ml
diff options
context:
space:
mode:
Diffstat (limited to 'otherlibs/threads/Tests/test8.ml')
-rw-r--r--otherlibs/threads/Tests/test8.ml46
1 files changed, 0 insertions, 46 deletions
diff --git a/otherlibs/threads/Tests/test8.ml b/otherlibs/threads/Tests/test8.ml
deleted file mode 100644
index cc587b0a7c..0000000000
--- a/otherlibs/threads/Tests/test8.ml
+++ /dev/null
@@ -1,46 +0,0 @@
-open Event
-
-type 'a buffer_channel = { input: 'a channel; output: 'a channel }
-
-let new_buffer_channel() =
- let ic = new_channel() in
- let oc = new_channel() in
- let buff = Queue.create() in
- let rec buffer_process front rear =
- match (front, rear) with
- ([], []) -> buffer_process [sync(receive ic)] []
- | (hd::tl, _) ->
- select [
- wrap (receive ic) (fun x -> buffer_process front (x::rear));
- wrap (send oc hd) (fun () -> buffer_process tl rear)
- ]
- | ([], _) -> buffer_process (List.rev rear) [] in
- Thread.create (buffer_process []) [];
- { input = ic; output = oc }
-
-let buffer_send bc data =
- sync(send bc.input data)
-
-let buffer_receive bc =
- receive bc.output
-
-(* Test *)
-
-let box = new_buffer_channel()
-let ch = new_channel()
-
-let f () =
- buffer_send box "un";
- buffer_send box "deux";
- sync (send ch 3)
-
-let g () =
- print_int (sync(receive ch)); print_newline();
- print_string (sync(buffer_receive box)); print_newline();
- print_string (sync(buffer_receive box)); print_newline()
-
-let _ =
- Thread.create f ();
- g()
-
-