src/Pure/Concurrent/task_queue.ML
Tue, 09 Jan 2024 11:54:36 +0100 wenzelm clarified signature;
Wed, 11 Oct 2023 11:27:01 +0200 wenzelm clarified signature;
Tue, 26 Sep 2023 14:42:33 +0200 wenzelm clarified signature;
Tue, 26 Sep 2023 12:46:31 +0200 wenzelm tuned signature;
Thu, 21 Sep 2023 23:45:03 +0200 wenzelm clarified modules;
Wed, 06 Sep 2023 20:51:28 +0200 wenzelm clarified signature: retain original Poly/ML names Thread.Thread, Thread.Mutex, Thread.ConditionVar and de-emphasize them for Isabelle/ML;
Wed, 06 Sep 2023 14:09:27 +0200 wenzelm more explicit type Isabelle_Thread.T;
Tue, 28 Mar 2023 18:10:45 +0200 wenzelm tuned signature: more uniform structure Key;
Mon, 27 Mar 2023 21:48:47 +0200 wenzelm performance tuning: prefer functor Set() over Table();
Wed, 15 Jul 2020 16:10:43 +0200 wenzelm clarified user counters: expose tasks to external monitor;
Fri, 06 Jul 2018 16:29:47 +0200 wenzelm just one global lock for group status: avoid proliferation of mutexes, condvars;
Sat, 02 Jun 2018 21:59:11 +0200 wenzelm record active execution task and depend on it -- avoid new executions bumping into old ones;
Wed, 09 May 2018 19:53:37 +0200 wenzelm record total number of tasks;
Tue, 08 Aug 2017 12:21:29 +0200 wenzelm clarified signature;
Thu, 22 Jun 2017 14:27:13 +0200 wenzelm more informative task_statistics;
Mon, 05 Sep 2016 23:11:00 +0200 wenzelm clarified modules;
Sat, 09 Apr 2016 14:00:23 +0200 wenzelm clarified bootstrap;
Wed, 06 Apr 2016 17:16:30 +0200 wenzelm tuned signature;
Sat, 02 Apr 2016 23:29:05 +0200 wenzelm prefer infix operations;
Sat, 02 Apr 2016 21:10:07 +0200 wenzelm careful export of type-dependent functions, without losing their special status;
Fri, 18 Mar 2016 16:26:35 +0100 wenzelm clarified modules;
Mon, 29 Jun 2015 20:55:46 +0200 wenzelm improved scheduling for urgent tasks, using farm of replacement threads (may lead to factor 2 overloading, but CPUs are usually hyperthreaded);
Fri, 09 Jan 2015 21:20:07 +0100 wenzelm clarified active_job: take dependencies into account (e.g. future based on promise);
Fri, 09 Jan 2015 20:51:26 +0100 wenzelm tuned;
Thu, 28 Nov 2013 12:54:39 +0100 wenzelm more official task context via Task_Queue.enroll, which is required to participate in group cancellation (e.g. to terminate command exec);
Sun, 25 Aug 2013 17:04:22 +0200 wenzelm simplified Goal.forked_proofs: status is determined via group instead of dummy future (see also Pure/PIDE/execution.ML);
Mon, 08 Jul 2013 12:00:45 +0200 wenzelm allow worker guest threads, which participate actively in future joins, but are outside thread accounting;
Fri, 05 Jul 2013 23:10:18 +0200 wenzelm more uniform Counter in ML and Scala;
Tue, 14 May 2013 20:46:09 +0200 wenzelm more uniform Markup.print_real;
Fri, 18 Jan 2013 17:51:50 +0100 wenzelm more systematic task statistics;
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);
less more (0) -100 -60 tip