module Squeue: Squeuetype 'a t 
val create : int -> 'a tcreate maxsize returns a synchronized queue bounded to have no more than
    maxsize elements.val push : 'a t -> 'a -> unitval push_uncond : 'a t -> 'a -> unitval push_or_drop : 'a t -> 'a -> boolval length : 'a t -> intval pop : 'a t -> 'aval lpop : 'a t -> 'a * intval transfer_queue_in : 'a t -> 'a Queue.t -> unitval transfer_queue_in_uncond : 'a t -> 'a Queue.t -> unitval transfer_queue : 'a t -> 'a Queue.t -> unitval transfer_queue_nowait : 'a t -> 'a Queue.t -> unitval clear : 'a t -> unitval wait_not_empty : 'a t -> unitwait_not_empty sq Waits for something to be available. This is
    useful if you want to wait, but not take something out. This
    function is not useful in most cases, but in some complex cases it
    is essential. For example you might need to take another lock
    before you remove something from the queue for processing, you
    might want to try to take that other lock, and if it fails do
    something else.
    This function is not dangerous, there is just ONE thing you HAVE
    to remember if you use it. Just because this function returns
    doesn't mean that pop will succeed, someone might have gotten
    there first, so you have to use transfer_queue_nowait if you don't
    want to block.
val sexp_of_t : ('a -> Sexplib.Sexp.t) -> 'a t -> Sexplib.Sexp.t