package async_kernel

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type

A Bvar is a synchronization point that allows one to broadcast a value to clients waiting on the broadcast. With a Bvar, one can efficiently notify multiple clients of edge-triggered conditions, repeating as each edge trigger occurs.

Bvar is like an ivar/deferred, except that it is always "empty" and can be repeatedly "filled" (via broadcast).

Another way to view Bvar is as a restriction of Condition that supports only broadcast, not signaling a single waiter. Dropping signal simplifies the implementation significantly.

type 'a t
include sig ... end
val sexp_of_t : ('a -> Sexplib.Sexp.t) -> 'a t -> Sexplib.Sexp.t
include Core_kernel.Invariant.S1 with type 'a t := 'a t
val invariant : ('a -> unit) -> 'a t -> unit
val create : unit -> 'a t
val wait : 'a t -> 'a Async_kernel__.Types.Deferred.t

wait t becomes determined by the next call to broadcast t a.

val broadcast : 'a t -> 'a -> unit
val has_any_waiters : 'a t -> bool

has_any_waiters t returns true iff there has been a call to wait t since the most recent call to broadcast t.