module Netsys_oothr:sig
..end
Object-oriented thread API
Makes the most important multi-threading primitives available using object types. For single-threaded apps, the operations are substituted by no-ops.
class type mtprovider =object
..end
class type thread =object
..end
class type mutex =object
..end
class type condition =object
..end
val provider : mtprovider Stdlib.ref
Return the multi-threading provider
val serialize : mutex -> ('a -> 'b) -> 'a -> 'b
serialize m f arg
: Locks m
, runs f arg
, unlocks m
, and returns
the result.
val atomic_init : 'a option Stdlib.ref -> 'a -> 'a
atomic_init var new_value
: If the variable var
is None
, it is
set to Some new_value
, and new_value
is returned. If it is
Some old_value
, then old_value
is returned. The operation is
atomic.
This function works independently of the provider.
val compare_and_swap : 'a Stdlib.ref -> 'a -> 'a -> bool
compare_and_swap var old_value new_value
: If the variable var
is
physically identical to old_value
it is atomically set to
new_value
, and true
is returned. Otherwise, var
is not assigned,
and false
is returned.
This function works independently of the provider.