Concur.Queue (concur v0.2.0) View Source

Stateful queue abstraction.

Often it's necessary to deal with a stateful queue, this abstraction is built using both Agents and Erlang's :queue module.

Examples

For example, the following uses the Queue by pushing and popping elements from it:

{:ok, queue} = Queue.start()

Queue.push(queue, 1)
Queue.push(queue, 2)
Queue.push(queue, 3)

Queue.pop(queue) # => {:value, 1}
Queue.pop(queue) # => {:value, 2}
Queue.pop(queue) # => {:value, 3}
Queue.pop(queue) # => :empty

Link to this section Summary

Link to this section Types

Link to this section Functions

Specs

is_empty?(queue()) :: boolean()

Specs

pop(queue()) :: {:value, term()} | :empty

Specs

push(queue(), term()) :: :ok

Specs

Specs

start_link(GenServer.options()) :: Agent.on_start()

Specs

stop(queue()) :: :ok

Specs

to_list(queue()) :: [term()]