(************************************************************ mlThread.ml Created : Fri Jun 21 13:27:29 2002 Last modified: Fri Jun 21 16:37:05 2002 Compile: ocamlopt.opt -thread unix.cmxa threads.cmxa mlThread.ml -o mlThread # ocamlc -thread threads.cma mlThread.ml -o mlThread ************************************************************) let c = ref 0 let rec up remain = begin if(remain = 0) then Thread.exit (); print_string "count up\n"; flush stdout; c := !c + 1; Thread.delay 0.01; for i = 0 to 100000 do () done; up (remain-1); end let rec print prev = begin (* なんか、busy waitで待つと動きませんでした。横取りしてくんないのかな? *) while !c = prev do Thread.delay 0.02 done; Printf.printf "Current count: %d\n" !c; flush stdout; print !c; end let _ = let start = begin print_string "hoge\n"; flush stdout; end in let t1 = Thread.create up 100 and t2 = Thread.create print !c in begin print_string "parent\n"; flush stdout; Thread.join t1; Thread.join t2; end