## GstAtomicQueue GstAtomicQueue — An atomic queue implementation |

## Functions

GstAtomicQueue * | gst_atomic_queue_new ()
void | gst_atomic_queue_ref ()
void | gst_atomic_queue_unref ()
void | gst_atomic_queue_push ()
gpointer | gst_atomic_queue_peek ()
gpointer | gst_atomic_queue_pop ()
guint | gst_atomic_queue_length ()

## Types and Values

| GstAtomicQueue

## Includes

    #include <gst/gst.h>

## Description

The GstAtomicQueue object implements a queue that can be used from multiple threads without performing any blocking operations.

## Functions

### gst_atomic_queue_new ()

    GstAtomicQueue *
    gst_atomic_queue_new (guint initial_size);

Create a new atomic queue instance. `initial_size` will be rounded up to the nearest power of 2 and used as the initial size of the queue.

#### Parameters

initial_size | initial queue size |

#### Returns

a new GstAtomicQueue

### gst_atomic_queue_ref ()

    void
    gst_atomic_queue_ref (GstAtomicQueue *queue);

Increase the refcount of `queue` .

#### Parameters

queue | a GstAtomicQueue |

### gst_atomic_queue_unref ()

    void
    gst_atomic_queue_unref (GstAtomicQueue *queue);

Unref `queue` and free the memory when the refcount reaches 0.

#### Parameters

queue | a GstAtomicQueue |

### gst_atomic_queue_push ()

    void
    gst_atomic_queue_push (GstAtomicQueue *queue,
                           gpointer data);

Append `data` to the tail of the queue.

#### Parameters

queue | a GstAtomicQueue |
data | the data |

### gst_atomic_queue_peek ()

    gpointer
    gst_atomic_queue_peek (GstAtomicQueue *queue);

Peek the head element of the queue without removing it from the queue.

#### Parameters

queue | a GstAtomicQueue |

#### Returns

the head element of `queue` or `NULL` when the queue is empty.

[transfer none][nullable]

### gst_atomic_queue_pop ()

    gpointer
    gst_atomic_queue_pop (GstAtomicQueue *queue);

Get the head element of the queue.

#### Parameters

queue | a GstAtomicQueue |

#### Returns

the head element of `queue` or `NULL` when the queue is empty.

[transfer full]

### gst_atomic_queue_length ()

    guint
    gst_atomic_queue_length (GstAtomicQueue *queue);

Get the amount of items in the queue.

#### Parameters

queue | a GstAtomicQueue |

#### Returns

the number of elements in the queue.

## Types and Values

### GstAtomicQueue

    typedef struct _GstAtomicQueue GstAtomicQueue;

Opaque atomic data queue.

Use the accessor functions to get the stored values.