packages feed

alms-0.6.0: examples/threads3.alms

(* A bad example with threads.  (type error!) *)

#load "libthread"

let rec printer () =
  AThread.delay 100000;
  putStr "x";
  flush ();
  printer ()

let startStop () =
  let id = AThread.fork printer in
  let id = AThread.print id in
    λ _ → AThread.kill id

let after delay stop =
  AThread.fork (λ _ → AThread.delay delay; stop ());
  ()

let main () =
  let stop = startStop () in
    after 2000000 stop;
    getLine ();
    stop ()    (* stop used twice! *)

in main ()