GLib.atomic_pointer_add
Description: Reference for GLib.atomic_pointer_add

### Function

# GLibatomic_pointer_add

since: 2.30

#### Declaration [src]

    gintptr
    g_atomic_pointer_add (
      void* atomic,
      gssize val
    )

#### Description [src]

Atomically adds `val` to the value of `atomic`.

Think of this operation as an atomic version of `{ tmp = *atomic; *atomic += val; return tmp; }`.

This call acts as a full compiler and hardware memory barrier.

While `atomic` has a `volatile` qualifier, this is a historical artifact and the pointer passed to it should not be `volatile`.

In GLib 2.80, the return type was changed from #gssize to #gintptr to add support for platforms with 128-bit pointers. This should not affect existing code.

Available since: 2.30

#### Parameters

`atomic`

  Type: `void*`

  A pointer to a #gpointer-sized value.

  The data is owned by the caller of the function.

`val`

  Type: `gssize`

  The value to add.

#### Return value

Type: `gintptr`

The value of `atomic` before the add, signed.