ATOMIC_CAS
— Atomic compare and swapATOMIC_CAS
compares the variable ATOM with the value of
COMPARE; if the value is the same, ATOM is set to the value
of NEW. Additionally, OLD is set to the value of ATOM
that was used for the comparison. When STAT is present and the invokation
was successful, it is assigned the value 0. If it is present and the invokation
has failed, it is assigned a positive value; in particular, for a coindexed
ATOM, if the remote image has stopped, it is assigned the value of
ISO_FORTRAN_ENV
's STAT_STOPPED_IMAGE
and if the remote image has
failed, the value STAT_FAILED_IMAGE
.
CALL ATOMIC_CAS (ATOM, OLD, COMPARE, NEW [, STAT])
ATOM | Scalar coarray or coindexed variable of either integer
type with ATOMIC_INT_KIND kind or logical type with
ATOMIC_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 of ATOM.
|
STAT | (optional) Scalar default-kind integer variable.
|
program atomic use iso_fortran_env logical(atomic_logical_kind) :: atom[*], prev call atomic_cas (atom[1], prev, .false., .true.)) end program atomic