Skip to content

Commit

Permalink
Update doc
Browse files Browse the repository at this point in the history
  • Loading branch information
kayceesrk committed Dec 6, 2016
1 parent 917f822 commit f8ecdd3
Showing 1 changed file with 20 additions and 0 deletions.
20 changes: 20 additions & 0 deletions src/lf_msqueue.mli
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,35 @@

module type S = sig
type 'a t
(** The type of lock-free queue. *)

val create : unit -> 'a t
(** Create a new queue, which is initially empty. *)

val is_empty : 'a t -> bool
(** [is_empty q] returns empty if [q] is empty. *)

val push : 'a t -> 'a -> unit
(** [push q v] pushes [v] to the back of the queue. *)

val pop : 'a t -> 'a option
(** [pop q] pops an element [e] from the front of the queue and returns
[Some v] if the queue is non-empty. Otherwise, returns [None]. *)

val clean_until : 'a t -> ('a -> bool) -> unit
(** [clean_until q f] drops the prefix of the queue until the element [e],
where [f e] is [true]. If no such element exists, then the queue is
emptied. *)

type 'a cursor
(** The type of cursor. *)

val snapshot : 'a t -> 'a cursor
(** Obtain a snapshot of the queue. This is a constant time operation. *)

val next : 'a cursor -> ('a * 'a cursor) option
(** [next c] returns [Some (e, c')] where [e] is the head of the queue and
[c'] is the tail, if the queue is non-empty. Otherwise, returns [None]. *)
end

module M : S

0 comments on commit f8ecdd3

Please sign in to comment.