Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds an
Atomic_array
module that gives a limited functionality equivalent of'a Atomic.t array
using internally only an'a array
based on thecaml_atomic_cas_field
function that already exists in the OCaml 5.0.0 - 5.2.0 runtime.The benefit of this is that only 1 word, instead of 3 words, is used per array element (i.e. a significant drop in memory use and allocations) and an indirection is avoided (i.e. less pointer chasing). This translates to, depending on the case, to significant performance improvements in the implementation of array based lock-free data structures (up to 40% improvement has been seen in some cases).