ATOMIC_CAS — Atomic compare and swap#
-
ATOMIC_CAS(ATOM, OLD, COMPARE, NEW, STAT)#
ATOMIC_CAS
compares the variableATOM
with the value ofCOMPARE
; if the value is the same,ATOM
is set to the value ofNEW
. Additionally,OLD
is set to the value ofATOM
that was used for the comparison. WhenSTAT
is present and the invocation was successful, it is assigned the value 0. If it is present and the invocation has failed, it is assigned a positive value; in particular, for a coindexedATOM
, if the remote image has stopped, it is assigned the value ofISO_FORTRAN_ENV
‘sSTAT_STOPPED_IMAGE
and if the remote image has failed, the valueSTAT_FAILED_IMAGE
.- Parameters
ATOM – Scalar coarray or coindexed variable of either integer type with
ATOMIC_INT_KIND
kind or logical type withATOMIC_LOGICAL_KIND
kind.OLD – Scalar of the same type and kind as
ATOM
.COMPARE – Scalar variable of the same type and kind as
ATOM
.NEW – Scalar variable of the same type as
ATOM
. If kind is different, the value is converted to the kind ofATOM
.STAT – (optional) Scalar default-kind integer variable.
- Standard:
TS 18508 or later
- Class:
Atomic subroutine
- Syntax:
CALL ATOMIC_CAS (ATOM, OLD, COMPARE, NEW [, STAT])
- Example:
program atomic use iso_fortran_env logical(atomic_logical_kind) :: atom[*], prev call atomic_cas (atom[1], prev, .false., .true.)) end program atomic
- See also:
ATOMIC_DEFINE — Setting a variable atomically, ATOMIC_REF — Obtaining the value of a variable atomically, ISO_FORTRAN_ENV