Next: _gfortran_caf_atomic_op, Previous: _gfortran_caf_atomic_ref, Up: Function ABI Documentation [Contents][Index]

#### 8.2.30 `_gfortran_caf_atomic_cas` — Atomic compare and swap

Description:

  Atomic compare and swap of a kind-4 integer or logical variable. Assigns atomically the specified value to the atomic variable, if the latter has the value specified by the passed condition value.

Syntax:

  `void _gfortran_caf_atomic_cas (caf_token_t token, size_t offset, int image_index, void *old, void *compare, void *new_val, int *stat, int type, int kind)`

Arguments:

  token | intent(in) An opaque pointer identifying the coarray.
  offset | intent(in) By which amount of bytes the actual data is shifted compared to the base address of the coarray.
  image_index | intent(in) The ID of the remote image; must be a positive number; zero indicates the current image when used noncoindexed.
  old | intent(out) The value which the atomic variable had just before the cas operation.
  compare | intent(in) The value used for comparision.
  new_val | intent(in) The new value for the atomic variable, assigned to the atomic variable, if `compare` equals the value of the atomic variable.
  stat | intent(out) Stores the status STAT= and may be NULL.
  type | intent(in) the data type, i.e. `BT_INTEGER` (1) or `BT_LOGICAL` (2).
  kind | intent(in) The kind value (only 4; always `int`)