src/Pure/Concurrent/task_queue.ML
changeset 45354 a2157057024c
parent 45136 2afb928c71ca
child 45642 65e4eeea09cd
equal deleted inserted replaced
45353:68f3e073ee21 45354:a2157057024c
   102 
   102 
   103 type timing = Time.time * Time.time * string list;  (*run, wait, wait dependencies*)
   103 type timing = Time.time * Time.time * string list;  (*run, wait, wait dependencies*)
   104 
   104 
   105 val timing_start = (Time.zeroTime, Time.zeroTime, []): timing;
   105 val timing_start = (Time.zeroTime, Time.zeroTime, []): timing;
   106 
   106 
   107 fun new_timing () = Synchronized.var "timing" timing_start;
   107 fun new_timing () =
       
   108   if ! Multithreading.trace < 2 then NONE
       
   109   else SOME (Synchronized.var "timing" timing_start);
   108 
   110 
   109 abstype task = Task of
   111 abstype task = Task of
   110  {group: group,
   112  {group: group,
   111   name: string,
   113   name: string,
   112   id: int,
   114   id: int,
   116 
   118 
   117 val dummy_task =
   119 val dummy_task =
   118   Task {group = new_group NONE, name = "", id = 0, pri = NONE, timing = NONE};
   120   Task {group = new_group NONE, name = "", id = 0, pri = NONE, timing = NONE};
   119 
   121 
   120 fun new_task group name pri =
   122 fun new_task group name pri =
   121   Task {group = group, name = name, id = new_id (), pri = pri, timing = SOME (new_timing ())};
   123   Task {group = group, name = name, id = new_id (), pri = pri, timing = new_timing ()};
   122 
   124 
   123 fun group_of_task (Task {group, ...}) = group;
   125 fun group_of_task (Task {group, ...}) = group;
   124 fun name_of_task (Task {name, ...}) = name;
   126 fun name_of_task (Task {name, ...}) = name;
   125 fun pri_of_task (Task {pri, ...}) = the_default 0 pri;
   127 fun pri_of_task (Task {pri, ...}) = the_default 0 pri;
   126 
   128