4
let rec integers n ch =
5
Event.sync (Event.send ch n);
8
let rec sieve n chin chout =
9
let m = Event.sync (Event.receive chin)
11
then sieve n chin chout
12
else Event.sync (Event.send chout m);
15
let rec print_primes ch max =
16
let n = Event.sync (Event.receive ch)
20
printf "%d\n" n; flush stdout;
21
let ch_after_n = Event.new_channel ()
22
in Thread.create (sieve n ch) ch_after_n;
23
print_primes ch_after_n max
27
let ch = Event.new_channel ()
28
in Thread.create (integers 2) ch;