package ocaml-base-compiler
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=43a3ac7aab7f8880f2bb6221317be55319b356e517622fdc28359fe943e6a450
doc/stdlib/Stdlib/Domain/DLS/index.html
Module Domain.DLS
Source
Domain-local Storage
Type of a DLS key
new_key f
returns a new key bound to initialiser f
for accessing , domain-local variables.
If split_from_parent
is not provided, the value for a new domain will be computed on-demand by the new domain: the first get
call will call the initializer f
and store that value.
If split_from_parent
is provided, spawning a domain will derive the child value (for this key) from the parent value. This computation happens in the parent domain and it always happens, regardless of whether the child domain will use it. If the splitting function is expensive or requires child-side computation, consider using 'a Lazy.t key
:
let init () = ...
let split_from_parent parent_value =
... parent-side computation ...;
lazy (
... child-side computation ...
)
let key = Domain.DLS.new_key ~split_from_parent init
let get () = Lazy.force (Domain.DLS.get key)
In this case a part of the computation happens on the child domain; in particular, it can access parent_value
concurrently with the parent domain, which may require explicit synchronization to avoid data races.
get k
returns v
if a value v
is associated to the key k
on the calling domain's domain-local state. Sets k
's value with its initialiser and returns it otherwise.