summaryrefslogtreecommitdiff
path: root/otherlibs/threads/Tests/test1.ml
diff options
context:
space:
mode:
Diffstat (limited to 'otherlibs/threads/Tests/test1.ml')
-rw-r--r--otherlibs/threads/Tests/test1.ml57
1 files changed, 0 insertions, 57 deletions
diff --git a/otherlibs/threads/Tests/test1.ml b/otherlibs/threads/Tests/test1.ml
deleted file mode 100644
index 9d2cf0a5ee..0000000000
--- a/otherlibs/threads/Tests/test1.ml
+++ /dev/null
@@ -1,57 +0,0 @@
-(* Classic producer-consumer *)
-
-type 'a prodcons =
- { buffer: 'a array;
- lock: Mutex.t;
- mutable readpos: int;
- mutable writepos: int;
- notempty: Condition.t;
- notfull: Condition.t }
-
-let create size init =
- { buffer = Array.create size init;
- lock = Mutex.create();
- readpos = 0;
- writepos = 0;
- notempty = Condition.create();
- notfull = Condition.create() }
-
-let put p data =
- Mutex.lock p.lock;
- while (p.writepos + 1) mod Array.length p.buffer = p.readpos do
- Condition.wait p.notfull p.lock
- done;
- p.buffer.(p.writepos) <- data;
- p.writepos <- (p.writepos + 1) mod Array.length p.buffer;
- Condition.signal p.notempty;
- Mutex.unlock p.lock
-
-let get p =
- Mutex.lock p.lock;
- while p.writepos = p.readpos do
- Condition.wait p.notempty p.lock
- done;
- let data = p.buffer.(p.readpos) in
- p.readpos <- (p.readpos + 1) mod Array.length p.buffer;
- Condition.signal p.notfull;
- Mutex.unlock p.lock;
- data
-
-(* Test *)
-
-let buff = create 20 0
-
-let rec produce n =
- print_int n; print_string "-->"; print_newline();
- put buff n;
- if n < 10000 then produce (n+1)
-
-let rec consume () =
- let n = get buff in
- print_string "-->"; print_int n; print_newline();
- if n < 10000 then consume ()
-
-let t1 = Thread.create produce 0
-let _ = consume ()
-
-;;