diff -r 296b478df14e -r e6e5750f1311 src/Pure/Concurrent/task_queue.ML --- a/src/Pure/Concurrent/task_queue.ML Mon Apr 09 15:10:52 2012 +0200 +++ b/src/Pure/Concurrent/task_queue.ML Mon Apr 09 17:22:23 2012 +0200 @@ -28,10 +28,11 @@ val waiting: task -> task list -> (unit -> 'a) -> 'a type queue val empty: queue + val group_tasks: queue -> group -> task list val known_task: queue -> task -> bool val all_passive: queue -> bool val status: queue -> {ready: int, pending: int, running: int, passive: int} - val cancel: queue -> group -> task list * Thread.thread list + val cancel: queue -> group -> Thread.thread list val cancel_all: queue -> group list * Thread.thread list val finish: task -> queue -> bool * queue val enqueue_passive: group -> (unit -> bool) -> queue -> task * queue @@ -210,6 +211,7 @@ fun make_queue groups jobs = Queue {groups = groups, jobs = jobs}; val empty = make_queue Inttab.empty Task_Graph.empty; +fun group_tasks (Queue {groups, ...}) group = Tasks.keys (get_tasks groups (group_id group)); fun known_task (Queue {jobs, ...}) task = can (Task_Graph.get_entry jobs) task; @@ -254,12 +256,9 @@ let val _ = cancel_group group Exn.Interrupt; val running = - Tasks.fold (fn (task, _) => fn (tasks, threads) => - (case get_job jobs task of - Running thread => (task :: tasks, insert Thread.equal thread threads) - | Passive _ => (task :: tasks, threads) - | _ => (tasks, threads))) - (get_tasks groups (group_id group)) ([], []); + Tasks.fold (fn (task, _) => + (case get_job jobs task of Running thread => insert Thread.equal thread | _ => I)) + (get_tasks groups (group_id group)) []; in running end; fun cancel_all (Queue {jobs, ...}) =