Module Sqlexpr_concurrency.Id


module Id: THREAD  with type 'a t = 'a
Identity concurrency monad. Note that Id.mutex is a dummy type that * doesn't actually work like a mutex (i.e., Id.with_lock m f is equivalent * to f (). This is so because n ocaml-sqlexpr's context Sqlite handles * can only be used from the thread where they were created, so there's no * need for mutual exclusion because trying to use the same handle from * different threads would be an error anyway.

type 'a t 
val return : 'a -> 'a t
val bind : 'a t ->
('a -> 'b t) -> 'b t
val fail : exn -> 'a t
val catch : (unit -> 'a t) ->
(exn -> 'a t) -> 'a t
val finalize : (unit -> 'a t) ->
(unit -> unit t) ->
'a t
val sleep : float -> unit t
val auto_yield : float -> unit -> unit t
type mutex 
val create_recursive_mutex : unit -> mutex
Create a recursive mutex that can be locked recursively by the same * thread; i.e., unlike a regular mutex, * with_lock m (fun () -> ... with_lock m (fun () -> ... )) * will not block.
val with_lock : mutex ->
(unit -> 'a t) -> 'a t