src/Pure/ML-Systems/multithreading_polyml.ML
changeset 26493 de4764e95166
parent 26390 99d4cbb1f941
child 26504 6e87c0a60104
equal deleted inserted replaced
26492:6e87cc839632 26493:de4764e95166
   216             let
   216             let
   217               val timer = Timer.startRealTimer ();
   217               val timer = Timer.startRealTimer ();
   218               val _ = tracing 4 (fn () => "CRITICAL" ^ show name ^ show' name' ^ ": waiting");
   218               val _ = tracing 4 (fn () => "CRITICAL" ^ show name ^ show' name' ^ ": waiting");
   219               val _ = Mutex.lock critical_lock;
   219               val _ = Mutex.lock critical_lock;
   220               val time = Timer.checkRealTimer timer;
   220               val time = Timer.checkRealTimer timer;
   221               val _ = tracing (if Time.> (time, Time.fromMilliseconds 10) then 3 else 4) (fn () =>
   221               val trace_time =
       
   222                 if Time.>= (time, Time.fromMilliseconds 1000) then 1
       
   223                 else if Time.>= (time, Time.fromMilliseconds 100) then 2
       
   224                 else if Time.>= (time, Time.fromMilliseconds 10) then 3 else 4;
       
   225               val _ = tracing trace_time (fn () =>
   222                 "CRITICAL" ^ show name ^ show' name' ^ ": passed after " ^ Time.toString time);
   226                 "CRITICAL" ^ show name ^ show' name' ^ ": passed after " ^ Time.toString time);
   223             in () end;
   227             in () end;
   224         val _ = critical_thread := SOME (Thread.self ());
   228         val _ = critical_thread := SOME (Thread.self ());
   225         val _ = critical_name := name;
   229         val _ = critical_name := name;
   226         val result = Exn.capture (restore_attributes e) ();
   230         val result = Exn.capture (restore_attributes e) ();