module Rml_async:`sig`

..`end`

Launching asychronous computations.

To use this module, ReactiveML programs need to be compiled with the option -thread.

`val proc_of_fun : ``('a -> 'b) -> 'a -> 'b process`

`run proc_of_fun f x`

executes `f x`

in a thread. The execution
can last several instants and terminates when the computation of
`f x`

terminates. If `f x`

do not terminate, the system remains
cooperative.

`val exec : ``('a, 'b) event -> ('c -> 'a) -> 'c -> unit`

`exec term f x`

spawns the computation of `f x`

in a thread and
terminates instantaneously. When the computation of `f x`

terminates, the result is sent on the signal `term`

.

`val safe_emit : ``('a, 'b) event -> 'a -> unit`

`safe_emit s v`

will emit the value `v`

on the signal `s`

, but
there is no guaranty on the instant of emission. This function can
be called from an external thread.

`val yield : ``unit -> unit`

`yield ()`

re-schedules the calling thread without suspending
it. This function can be used to give scheduling hints, telling the
thread scheduler that now is a good time to switch to other threads.