Atomic.Bigstringfetch_and_$op_$type ptr ~pos val atomically runs *( *$type )((ptr + pos) $op val, stores the result at ptr + pos, and returns the original value at ptr + pos.
Note that pos is a byte offset into the bigstring. If the offset is not a multiple of the target int width in bytes, the operation will be unaligned and potentially *much* slower than the aligned case.
Pointer to untagged int
val fetch_and_add : Bigstring_intf.t -> pos:int -> int -> intval fetch_and_sub : Bigstring_intf.t -> pos:int -> int -> intval compare_and_swap :
Bigstring_intf.t ->
pos:int ->
compare_with:int ->
set_to:int ->
boolPointer to unboxed int64
val fetch_and_add_int64 : Bigstring_intf.t -> pos:int -> int64 -> int64val fetch_and_sub_int64 : Bigstring_intf.t -> pos:int -> int64 -> int64val compare_and_swap_int64 :
Bigstring_intf.t ->
pos:int ->
compare_with:int64 ->
set_to:int64 ->
boolPointer to unboxed int32
val fetch_and_add_int32 : Bigstring_intf.t -> pos:int -> int32 -> int32val fetch_and_sub_int32 : Bigstring_intf.t -> pos:int -> int32 -> int32val compare_and_swap_int32 :
Bigstring_intf.t ->
pos:int ->
compare_with:int32 ->
set_to:int32 ->
boolPointer to unboxed nativeint
val fetch_and_add_nativeint :
Bigstring_intf.t ->
pos:int ->
nativeint ->
nativeintval fetch_and_sub_nativeint :
Bigstring_intf.t ->
pos:int ->
nativeint ->
nativeintval compare_and_swap_nativeint :
Bigstring_intf.t ->
pos:int ->
compare_with:nativeint ->
set_to:nativeint ->
bool