# Module Core_gc.Expert.Alarm

    module Alarm: sig .. end

A GC alarm calls a user function at the end of each major GC cycle.

    type t

    val create : (unit -> unit) -> t

`create f` arranges for `f` to be called at the end of each major GC cycle, starting with the current cycle or the next one. `f` can be called in any thread, and so introduces all the complexity of threading. `f` is called with `Exn.handle_uncaught_and_exit`, to prevent it from raising, because raising could raise to any allocation or GC point in any thread, which would be impossible to reason about.

    val delete : t -> unit

`delete t` will stop the calls to the function associated to `t`. Calling `delete t` again has no effect.

    val sexp_of_t : t -> Sexplib.Sexp.t

`create f` arranges for `f` to be called at the end of each major GC cycle, starting with the current cycle or the next one. `f` can be called in any thread, and so introduces all the complexity of threading. `f` is called with `Exn.handle_uncaught_and_exit`, to prevent it from raising, because raising could raise to any allocation or GC point in any thread, which would be impossible to reason about.
`delete t` will stop the calls to the function associated to `t`. Calling `delete t` again has no effect.