class type['a]
cache_t =object
..end
A cache contains a mutable value that is obtained by running an engine.
method get_engine : unit -> 'a engine
Requests the value. If it is not already in the cache, the engine for getting the value is started, and it is waited until the value is available.
method get_opt : unit -> 'a option
Returns the cached value if available
method put : 'a -> unit
Puts a value immediately into the cache. It replaces an existing
value. If it is currently tried to obtain a new value by running
an engine, this engine is kept running, and get_engine
will
return its result. Only future calls of get_engine
will return
the value just put into the cache.
method invalidate : unit -> unit
Invalidates the cache - if a value exists in the cache, it is removed.
If in the future the cache value is requested via get_engine
the engine will be started anew to get the value.
Note that (as for put
) any already running get_engine
is not
interrupted.
method abort : unit -> unit
Any engine running to get the cache value is aborted, and the contents
of the cache are invalidated. Note that also the engines returned
by get_engine
are aborted.