sig
  type t = Thread.t
  val spawn : (unit -> 'a) -> CCThread.t
  val spawn1 : ('-> 'b) -> '-> CCThread.t
  val spawn2 : ('-> '-> 'c) -> '-> '-> CCThread.t
  val detach : (unit -> 'a) -> unit
  module Arr :
    sig
      val spawn : int -> (int -> 'a) -> CCThread.t array
      val join : CCThread.t array -> unit
    end
  module Barrier :
    sig
      type t
      val create : unit -> CCThread.Barrier.t
      val reset : CCThread.Barrier.t -> unit
      val wait : CCThread.Barrier.t -> unit
      val activate : CCThread.Barrier.t -> unit
      val activated : CCThread.Barrier.t -> bool
    end
end