sig
  type 'a event_t
  and scheduler_t
  type thread_t
  exception No_value
  exception FT_error of string
  val create_scheduler : unit -> Fthread.scheduler_t
  val create_thread :
    Fthread.scheduler_t -> ('-> unit) -> '-> Fthread.thread_t
  val create_event : Fthread.scheduler_t -> 'Fthread.event_t
  val start_scheduler : Fthread.scheduler_t -> unit
  val cooperate : unit -> unit
  val cooperate_n : int -> unit
  val generate : 'Fthread.event_t -> unit
  val generate_value : 'Fthread.event_t -> '-> unit
  val await : 'Fthread.event_t -> unit
  val await_n : 'Fthread.event_t -> int -> unit
  val get_value : 'Fthread.event_t -> 'a
  val get_value_n : 'Fthread.event_t -> int -> 'a
  val unlink : unit -> unit
  val link : Fthread.scheduler_t -> unit
  val thread_stop : Fthread.thread_t -> unit
  val thread_suspend : Fthread.thread_t -> unit
  val thread_resume : Fthread.thread_t -> unit
  val join : Fthread.thread_t -> unit
  val exit : unit -> unit
end