Модуль Atomic
module Atomic: sig .. end
Этот модуль предоставляет чисто последовательную реализацию атомарных ссылок, предоставляемых стандартной библиотекой Multicore OCaml:
https://github.com/ocaml-multicore/ocaml-multicore/blob/parallel_minor_gc/stdlib/atomic.mli
Эта последовательная реализация предоставляется для обеспечения совместимости: когда люди начнут писать код для выполнения на Multicore, будет неплохо, если их использование Atomic будет обратно совместимо со старыми версиями OCaml без необходимости импорта дополнительных слоев совместимости.
- Since 4.12
type 'a t
Атомарная (изменяемая) ссылка на значение типа 'a.
val make : 'a -> 'a t
Создать атомарную ссылку.
val get : 'a t -> 'a
Получить текущее значение атомарной ссылки.
val set : 'a t -> 'a -> unit
Установить новое значение для атомарной ссылки.
val exchange : 'a t -> 'a -> 'a
Установить новое значение для атомарной ссылки и вернуть текущее значение.
val compare_and_set : 'a t -> 'a -> 'a -> bool
compare_and_set r seen v устанавливает новое значение r в v только в том случае, если его текущее значение физически равно seen - сравнение и установка происходят атомарно. Возвращает true если сравнение прошло успешно (то есть установка произошла) и false в противном случае.
val fetch_and_add : int t -> int -> int
fetch_and_add r n атомарно увеличивает значение r на n, и возвращает текущее значение (до увеличения).
val incr : int t -> unit
incr r атомарно увеличивает значение r на 1.
val decr : int t -> unit
decr r атомарно уменьшает значение r на 1.
© 1995-2022 INRIA.
https://v2.ocaml.org/releases/4.14/htmlman/libref/Atomic.html