src/Pure/Concurrent/task_queue.ML
Wed, 11 Apr 2012 13:49:09 +0200 wenzelm more robust Future.fulfill wrt. duplicate assignment and interrupt;
Mon, 09 Apr 2012 17:22:23 +0200 wenzelm simplified Future.cancel/cancel_group (again) -- running threads only;
Sat, 26 Nov 2011 13:10:12 +0100 wenzelm tuned;
Sun, 06 Nov 2011 13:25:41 +0100 wenzelm optional timing, to avoid redundant allocation of mutable cells;
Thu, 13 Oct 2011 22:50:35 +0200 wenzelm static dummy_task (again) to avoid a few extra allocations;
Sun, 21 Aug 2011 13:23:29 +0200 wenzelm purely functional task_queue.ML -- moved actual interrupt_unsynchronized to future.ML;
Sun, 21 Aug 2011 13:10:48 +0200 wenzelm refined Task_Queue.cancel: passive tasks are considered running due to pending abort operation;
Sat, 20 Aug 2011 23:35:30 +0200 wenzelm refined Graph implementation: more abstract/scalable Graph.Keys instead of plain lists -- order of adjacency is now standardized wrt. Key.ord;
Fri, 19 Aug 2011 15:56:26 +0200 wenzelm refined Future.cancel: explicit future allows to join actual cancellation;
Wed, 17 Aug 2011 22:14:22 +0200 wenzelm more systematic handling of parallel exceptions;
Wed, 10 Aug 2011 15:17:24 +0200 wenzelm more explicit Simple_Thread.interrupt_unsynchronized, to emphasize its meaning;
Sat, 23 Jul 2011 21:29:56 +0200 wenzelm more detailed tracing;
Wed, 13 Jul 2011 16:42:14 +0200 wenzelm Table.lookup_key and Graph.get_entry allow to retrieve the original key, which is not necessarily identical to the given one;
Fri, 04 Feb 2011 21:52:36 +0100 wenzelm more scalable collections of tasks, notably for totality of known group members;
Fri, 04 Feb 2011 20:40:25 +0100 wenzelm tuned signature;
Fri, 04 Feb 2011 16:33:12 +0100 wenzelm Task_Queue.update_timing: more precise treatment of interruptibility;
Wed, 02 Feb 2011 20:32:50 +0100 wenzelm eliminated slightly odd abstract type Task_Queue.deps;
Wed, 02 Feb 2011 17:26:07 +0100 wenzelm refined Task_Queue.dequeue_deps (more incremental);
Wed, 02 Feb 2011 15:04:09 +0100 wenzelm maintain Task_Queue.group within Task_Queue.task;
Wed, 02 Feb 2011 13:44:40 +0100 wenzelm tuned comment;
Wed, 02 Feb 2011 13:38:09 +0100 wenzelm Future.join_results: discontinued post-hoc recording of dynamic dependencies;
Tue, 01 Feb 2011 22:24:28 +0100 wenzelm more informative task timing: some dependency tracking;
Tue, 01 Feb 2011 21:05:22 +0100 wenzelm refined task timing: joining vs. waiting;
Mon, 31 Jan 2011 23:21:43 +0100 wenzelm name "passive" tasks (practically lazy values);
Mon, 31 Jan 2011 22:57:01 +0100 wenzelm support named tasks, for improved tracing;
Mon, 31 Jan 2011 16:34:10 +0100 wenzelm added basic task timing;
Tue, 09 Nov 2010 21:52:05 +0100 wenzelm private counter, to keep externalized ids a bit smaller;
Fri, 10 Sep 2010 14:54:08 +0200 wenzelm Future.promise: more robust treatment of concurrent abort vs. fulfill (amending 047c96f41455);
Thu, 09 Sep 2010 17:20:27 +0200 wenzelm more abstract treatment of interrupts in structure Exn -- hardly ever need to mention Interrupt literally;
Tue, 20 Jul 2010 17:35:42 +0200 wenzelm back to more strict dependencies, even for canceled groups (reverting parts of 02936e77a07c);
Mon, 31 May 2010 21:06:57 +0200 wenzelm modernized some structure names, keeping a few legacy aliases;
Fri, 19 Feb 2010 22:25:26 +0100 wenzelm eliminated opaque signature matching -- tends to cause problems with toplevel pp for abstract types;
Sat, 06 Feb 2010 16:32:34 +0100 wenzelm removed unused "boundary" of Table/Graph.get_first;
Wed, 06 Jan 2010 18:14:16 +0100 wenzelm eliminated cache, which complicates the code without making a real difference (NB: deque_towards often disrupts caching, and daisy-chaining of workers already reduces queue overhead);
Wed, 06 Jan 2010 15:07:56 +0100 wenzelm tasks of canceled groups are considered "ready" -- enables to purge the queue from tasks depending on unfinished promises (also improves general reactivity);
Tue, 05 Jan 2010 23:38:10 +0100 wenzelm added Future.promise/fulfill -- promised futures that are fulfilled by external means;
Thu, 01 Oct 2009 16:27:13 +0200 wenzelm added Task_Queue.depend (again) -- light-weight version for transitive graph;
Wed, 30 Sep 2009 22:20:58 +0200 wenzelm eliminated redundant bindings;
Tue, 28 Jul 2009 14:54:53 +0200 wenzelm group status: Synchronized.var;
Tue, 28 Jul 2009 14:43:46 +0200 wenzelm tuned;
Tue, 28 Jul 2009 14:35:27 +0200 wenzelm Task_Queue.dequeue: explicit thread;
Mon, 27 Jul 2009 15:06:33 +0200 wenzelm dequeue_towards: always return active tasks;
Mon, 27 Jul 2009 13:32:23 +0200 wenzelm removed unused low-level interrupts;
Mon, 27 Jul 2009 12:24:27 +0200 wenzelm tuned signature;
Mon, 27 Jul 2009 12:00:02 +0200 wenzelm enqueue/finish: return minimal/maximal state of this task;
Sat, 25 Jul 2009 14:58:45 +0200 wenzelm dequeue_towards: need to try imm_preds as well;
Sat, 25 Jul 2009 14:18:26 +0200 wenzelm enqueue: maintain transitive closure, which simplifies dequeue_towards;
Tue, 21 Jul 2009 20:37:31 +0200 wenzelm support for nested groups -- cancellation is propagated to peers and subgroups;
Tue, 21 Jul 2009 15:25:22 +0200 wenzelm propagate exceptions within future groups;
Tue, 21 Jul 2009 10:23:16 +0200 wenzelm tuned dequeu_towards: try immediate tasks before expensive all_preds;
Sun, 19 Jul 2009 14:14:25 +0200 wenzelm recovered a version of dequeue_towards (cf. bb7b5a5942c7);
Sat, 18 Jul 2009 22:51:29 +0200 wenzelm added group_id;
Thu, 09 Jul 2009 22:01:41 +0200 wenzelm renamed functor TableFun to Table, and GraphFun to Graph;
Sun, 14 Jun 2009 23:25:49 +0200 wenzelm removed obsolete depend, add_job_acyclic;
Sat, 13 Jun 2009 19:40:37 +0200 wenzelm simplified join_results: no longer work "towards" deps, which simplifies task queue management and maintains strict bottom up discipline (without "transfer of priority" to required futures);
Tue, 06 Jan 2009 13:43:17 +0100 wenzelm added is_valid;
Sun, 04 Jan 2009 00:00:03 +0100 wenzelm cancel: unique threads;
Sat, 03 Jan 2009 21:44:24 +0100 wenzelm added eq_group;
Tue, 16 Dec 2008 16:25:19 +0100 wenzelm renamed structure TaskQueue to Task_Queue;
Tue, 16 Dec 2008 00:19:47 +0100 wenzelm tuned enqueue: plain add_edge, acyclic not required here;
less more (0) -60 tip