Remise a jour des tests pour la version sans pthread.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@750 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02master
parent
96352de1de
commit
efde39b847
|
@ -1,4 +1,4 @@
|
|||
PROGS=test1.byt test2.byt test3.byt test4.byt test5.byt test6.byt test7.byt test8.byt test9.byt testA.byt torture.byt
|
||||
PROGS=test1.byt test2.byt test3.byt test4.byt test5.byt test6.byt test7.byt test8.byt test9.byt testA.byt sieve.byt
|
||||
|
||||
include ../../../config/Makefile
|
||||
|
||||
|
@ -8,11 +8,11 @@ clean:
|
|||
rm -f *.cm* *.byt
|
||||
|
||||
sorts.byt: sorts.ml
|
||||
cslc -custom -o sorts.byt -I .. -I ../../graph threads.cma graphics.cma sorts.ml ../libthreads.a ../../graph/libgraphics.a $(X11_LINK) $(PTHREADS_LINK)
|
||||
cslc -custom -o sorts.byt -I .. -I ../../graph threads.cma graphics.cma sorts.ml ../libthreads.a ../../graph/libgraphics.a $(X11_LINK)
|
||||
|
||||
.SUFFIXES: .ml .byt
|
||||
|
||||
.ml.byt:
|
||||
cslc -custom -o $*.byt -I .. -I ../../unix unix.cma threads.cma $*.ml ../libthreads.a ../../unix/libunix.a $(PTHREADS_LINK)
|
||||
cslc -custom -o $*.byt -I .. threads.cma $*.ml ../libthreads.a
|
||||
|
||||
$(PROGS): ../threads.cma ../libthreads.a
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
open Printf
|
||||
open Thread
|
||||
|
||||
let rec integers n ch =
|
||||
Event.sync (Event.send ch n);
|
||||
integers (n+1) ch
|
||||
|
||||
let rec sieve n chin chout =
|
||||
let m = Event.sync (Event.receive chin)
|
||||
in if m mod n = 0
|
||||
then sieve n chin chout
|
||||
else Event.sync (Event.send chout m);
|
||||
sieve n chin chout
|
||||
|
||||
let rec print_primes ch max =
|
||||
let n = Event.sync (Event.receive ch)
|
||||
in if n > max
|
||||
then ()
|
||||
else begin
|
||||
printf "%d\n" n; flush stdout;
|
||||
let ch_after_n = Event.new_channel ()
|
||||
in new (sieve n ch) ch_after_n;
|
||||
print_primes ch_after_n max
|
||||
end
|
||||
|
||||
let go max =
|
||||
let ch = Event.new_channel ()
|
||||
in new (integers 2) ch;
|
||||
print_primes ch max;;
|
||||
|
||||
let _ = go 1000
|
|
@ -1,8 +1,8 @@
|
|||
let print_message delay c =
|
||||
while true do
|
||||
print_char c; flush stdout; Unix.sleep delay
|
||||
print_char c; flush stdout; Thread.delay delay
|
||||
done
|
||||
|
||||
let _ =
|
||||
Thread.new (print_message 2) 'a';
|
||||
print_message 3 'b'
|
||||
Thread.new (print_message 0.6666666666) 'a';
|
||||
print_message 1.0 'b'
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
open ThreadIO
|
||||
|
||||
let rec fib n = if n <= 2 then 1 else fib(n-1) + fib(n-2)
|
||||
|
||||
let fibtask n =
|
||||
|
|
|
@ -15,8 +15,7 @@ let _ =
|
|||
Thread.new sender "hello";
|
||||
Thread.new sender "world";
|
||||
Thread.new receiver "A";
|
||||
Thread.new receiver "B";
|
||||
read_line();
|
||||
receiver "B";
|
||||
exit 0
|
||||
|
||||
|
||||
|
|
|
@ -11,8 +11,7 @@ let rec f tag msg =
|
|||
|
||||
let _ =
|
||||
Thread.new (f "A") "hello";
|
||||
Thread.new (f "B") "world";
|
||||
read_line();
|
||||
f "B" "world";
|
||||
exit 0
|
||||
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
let gc_thread () =
|
||||
while true do
|
||||
(* print_string "gc"; print_newline(); *)
|
||||
Gc.minor(); Thread.yield()
|
||||
Gc.minor()
|
||||
done
|
||||
|
||||
let stdin_thread () =
|
||||
|
|
Loading…
Reference in New Issue