# Module Netsys_oothr

    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.