sig
  type 'a t
  val return : '-> 'Sqlexpr_concurrency.THREAD.t
  val bind :
    'Sqlexpr_concurrency.THREAD.t ->
    ('-> 'Sqlexpr_concurrency.THREAD.t) ->
    'Sqlexpr_concurrency.THREAD.t
  val fail : exn -> 'Sqlexpr_concurrency.THREAD.t
  val catch :
    (unit -> 'Sqlexpr_concurrency.THREAD.t) ->
    (exn -> 'Sqlexpr_concurrency.THREAD.t) ->
    'Sqlexpr_concurrency.THREAD.t
  val finalize :
    (unit -> 'Sqlexpr_concurrency.THREAD.t) ->
    (unit -> unit Sqlexpr_concurrency.THREAD.t) ->
    'Sqlexpr_concurrency.THREAD.t
  val sleep : float -> unit Sqlexpr_concurrency.THREAD.t
  val auto_yield : float -> unit -> unit Sqlexpr_concurrency.THREAD.t
  type mutex
  val create_recursive_mutex : unit -> Sqlexpr_concurrency.THREAD.mutex
  val with_lock :
    Sqlexpr_concurrency.THREAD.mutex ->
    (unit -> 'Sqlexpr_concurrency.THREAD.t) ->
    'Sqlexpr_concurrency.THREAD.t
end