# Concurrent.BoundedQueue

- Package
- purescript-concurrent-queues
- Repository
- slamdata/purescript-concurrent-queues

A concurrent FIFO data structure with bounded capacity.

This datastructure is useful in various consumer/producer situations.

### #new Source

`new :: forall a. Int -> Aff (BoundedQueue a)`

Creates a new `BoundedQueue`

with the given capacity,

### #write Source

`write :: forall a. BoundedQueue a -> a -> Aff Unit`

Writes an element to the given queue. Will block if the queue is full until someone reads from it.

### #read Source

`read :: forall a. BoundedQueue a -> Aff a`

Reads an element from the given queue, will block if the queue is empty, until someone writes to it.

### #isEmpty Source

`isEmpty :: forall a. BoundedQueue a -> Aff Boolean`

Checks whether the given queue is empty. Never blocks.

### #tryRead Source

`tryRead :: forall a. BoundedQueue a -> Aff (Maybe a)`

Attempts to read an element from the given queue. If the queue is empty,
returns `Nothing`

.

*Careful!* If other readers are blocked on the queue `tryRead`

will also
block.

### #tryWrite Source

`tryWrite :: forall a. BoundedQueue a -> a -> Aff Boolean`

Attempts to write an element into the given queue. If the queue is full,
returns `false`

otherwise `true`

.

*Careful!* If other writers are blocked on the queue `tryWrite`

will also
block.

## Re-exports from **Concurrent.**BoundedQueue.Internal

### #BoundedQueue Source

`newtype BoundedQueue a`