Moonpool_private.Ws_deque_
Work-stealing deque.
Adapted from "Dynamic circular work stealing deque", Chase & Lev.
However note that this one is not dynamic in the sense that there is no resizing. Instead we return false
when push
fails, which keeps the implementation fairly lightweight.
val create : dummy:'a -> unit -> 'a t
Create a new deque.
val push : 'a t -> 'a -> bool
Push value at the bottom of deque. returns true
if it succeeds. This must be called only by the owner thread.
val pop : 'a t -> 'a option
Pop value from the bottom of deque. This must be called only by the owner thread.
val steal : 'a t -> 'a option
Try to steal from the top of deque. This is thread-safe.
val size : _ t -> int