package coq-core
Install
Dune Dependency
Authors
Maintainers
Sources
md5=13d2793fc6413aac5168822313e4864e
sha512=ec8379df34ba6e72bcf0218c66fef248b0e4c5c436fb3f2d7dd83a2c5f349dd0874a67484fcf9c0df3e5d5937d7ae2b2a79274725595b4b0065a381f70769b42
doc/coq-core.stm/AsyncTaskQueue/index.html
Module AsyncTaskQueue
Source
This file provides an API for defining and managing a queue of tasks to be done by external workers.
A queue of items of type task
is maintained, then for each task, a request is generated, then sent to a worker using marshalling.
The workers will then eventually return a result, using marshalling again: ____ ____ ____ ________ | T1 | T2 | T3 | => request
=> | Worker | |____|____|____| <= response
<= |________| | Master Proc. | \--------------/
Thus request
and response
must be safely marshallable.
Operations for managing the task queue are provide, see below for more details.
The Task
module type defines an abstract message-processing queue.
cancel_switch
to be flipped to true by anyone to signal the task is not relevant anymore. When the STM performs an undo/edit-at, it crawls the document and flips these flags (the Qed node carries a pointer to the flag IIRC).
Client-side functor. MakeQueue T
creates a task queue for task T
Server-side functor. MakeWorker T
creates the server task dispatcher.