Page
Library
Module
Module type
Parameter
Class
Class type
Source
RowexSourcePersistent implementation of Adaptive Radix Tree.
This module implements the core of ROWEX/P-ART from the given way to atomically load and store values. This implementation wants to ensure 2 things:
insert and lookup can be executed in true parallelismS.persist)The "normal" model for our atomic operations is always the acquire/release model for our variables. This corresponds to what a CPU can normally consider if it complies with the TSO memory model (which is the case for an x86 processor). In the case of a CPU such as ARM, it is necessary to make this model explicit. However, there is an optimization where certain writes can be relaxed. It is difficult to know the impact of such an optimization: and to announce our ordering property as weak.
Thus, to simplify, we can consider that all loads have the acquire property and all stores have the release property.
type ('c, 'a) value = | Int8 : (atomic, int) value| LEInt : (atomic, int) value| LEInt16 : (atomic, int) value| LEInt31 : (atomic, int) value| LEInt64 : (atomic, int64) value| LEInt128 : (atomic, string) value| Addr_rd : (atomic, ro Addr.t) value| Addr_rdwr : (atomic, rdwr Addr.t) value| OCaml_string : (non_atomic, string) value| OCaml_string_length : (non_atomic, int) value/