This queue has a limited size. Pushing a value on the queue when it is full will block.
val create : int ‑> 'a tCreate a new queue of size n. Using n=max_int amounts to using
an infinite queue (2^61 items is a lot to fit in memory); using n=1
amounts to using a box with 0 or 1 elements inside.
n < 1.val try_take : 'a t ‑> 'a optionTake the first element if the queue is not empty, return None
otherwise.
val try_push : 'a t ‑> 'a ‑> booltry_push q x pushes x into q if q is not full, in which
case it returns true.
If it fails because q is full, it returns false.
val peek : 'a t ‑> 'a optionpeek q returns Some x if x is the first element of q,
otherwise it returns None.