From 4e724634839726aa11534f16e4bfb95cd81232a4 Mon Sep 17 00:00:00 2001 From: Enrico Tassi Date: Wed, 23 Jul 2014 11:54:36 +0200 Subject: STM: code restructured to reuse task queue for tactics --- stm/asyncTaskQueue.mli | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 stm/asyncTaskQueue.mli (limited to 'stm/asyncTaskQueue.mli') diff --git a/stm/asyncTaskQueue.mli b/stm/asyncTaskQueue.mli new file mode 100644 index 000000000..e01479d30 --- /dev/null +++ b/stm/asyncTaskQueue.mli @@ -0,0 +1,61 @@ +(************************************************************************) +(* v * The Coq Proof Assistant / The Coq Development Team *) +(* string array + + (* run by the master, on a thread *) + val request_of_task : task -> request option + val use_response : task -> response -> [ `Die | `Stay | `StayReset ] + val on_marshal_error : string -> task -> unit + val on_slave_death : task option -> [ `Exit of int | `Stay ] + val on_task_cancellation_or_expiration : task option -> unit + val forward_feedback : Stateid.t -> Feedback.feedback_content -> unit + + (* run by the worker *) + val perform : request -> response + + (* debugging *) + val name_of_task : task -> string + val name_of_request : request -> string + +end + +type cancel_switch = bool ref + +module Make(T : Task) : sig + + (* Number of workers, 0 = lazy local *) + val init : int -> unit + + val n_workers : unit -> int + + val enqueue_task : T.task -> cancel_switch -> unit + + (* blocking function that waits for the task queue to be empty *) + val join : unit -> unit + + (* slave process main loop *) + val slave_main_loop : (unit -> unit) -> unit + val slave_init_stdout : unit -> unit + + val cancel_worker : string -> unit + + val reorder_tasks : (T.task -> T.task -> int) -> unit + + val dump : unit -> T.task list + +end -- cgit v1.2.3