Queue

cats.effect.std.Queue
See theQueue companion object
abstract class Queue[F[_], A] extends QueueSource[F, A], QueueSink[F, A]

A purely functional, concurrent data structure which allows insertion and retrieval of elements of type A in a first-in-first-out (FIFO) manner.

Depending on the type of queue constructed, the Queue#offer operation can block semantically until sufficient capacity in the queue becomes available.

The Queue#take operation semantically blocks when the queue is empty.

The Queue#tryOffer and Queue#tryTake allow for usecases which want to avoid fiber blocking a fiber.

Attributes

Companion
object
Source
Queue.scala
Graph
Supertypes
trait QueueSink[F, A]
trait QueueSource[F, A]
class Object
trait Matchable
class Any
Known subtypes
trait Dequeue[F, A]
Self type
Queue[F, A]

Members list

Value members

Concrete methods

def mapK[G[_]](f: FunctionK[F, G]): Queue[G, A]

Modifies the context in which this queue is executed using the natural transformation f.

Modifies the context in which this queue is executed using the natural transformation f.

Attributes

Returns

a queue in the new context obtained by mapping the current one using f

Source
Queue.scala

Inherited methods

def offer(a: A): F[Unit]

Enqueues the given element at the back of the queue, possibly fiber blocking until sufficient capacity becomes available.

Enqueues the given element at the back of the queue, possibly fiber blocking until sufficient capacity becomes available.

Value parameters

a

the element to be put at the back of the queue

Attributes

Inherited from:
QueueSink
Source
Queue.scala
def size: F[Int]

Attributes

Inherited from:
QueueSource
Source
Queue.scala
def take: F[A]

Dequeues an element from the front of the queue, possibly fiber blocking until an element becomes available.

Dequeues an element from the front of the queue, possibly fiber blocking until an element becomes available.

Attributes

Inherited from:
QueueSource
Source
Queue.scala
def tryOffer(a: A): F[Boolean]

Attempts to enqueue the given element at the back of the queue without semantically blocking.

Attempts to enqueue the given element at the back of the queue without semantically blocking.

Value parameters

a

the element to be put at the back of the queue

Attributes

Returns

an effect that describes whether the enqueuing of the given element succeeded without blocking

Inherited from:
QueueSink
Source
Queue.scala
def tryOfferN(list: List[A])(implicit F: Monad[F]): F[List[A]]

Attempts to enqueue the given elements at the back of the queue without semantically blocking.

Attempts to enqueue the given elements at the back of the queue without semantically blocking. If an item in the list cannot be enqueued, the remaining elements will be returned. This is a convenience method that recursively runs tryOffer and does not offer any additional performance benefits.

Value parameters

list

the elements to be put at the back of the queue

Attributes

Returns

an effect that contains the remaining valus that could not be offered.

Inherited from:
QueueSink
Source
Queue.scala
def tryTake: F[Option[A]]

Attempts to dequeue an element from the front of the queue, if one is available without fiber blocking.

Attempts to dequeue an element from the front of the queue, if one is available without fiber blocking.

Attributes

Returns

an effect that describes whether the dequeueing of an element from the queue succeeded without blocking, with None denoting that no element was available

Inherited from:
QueueSource
Source
Queue.scala
def tryTakeN(maxN: Option[Int])(implicit F: Monad[F]): F[List[A]]

Attempts to dequeue elements from the front of the queue, if they are available without semantically blocking.

Attempts to dequeue elements from the front of the queue, if they are available without semantically blocking. This method does not guarantee any additional performance benefits beyond simply recursively calling tryTake, though some implementations will provide a more efficient implementation.

Value parameters

maxN

The max elements to dequeue. Passing None will try to dequeue the whole queue.

Attributes

Returns

an effect that contains the dequeued elements

Inherited from:
QueueSource
Source
Queue.scala