ATOMIC_REF — Obtaining the value of a variable atomically#
-
ATOMIC_REF(VALUE, ATOM, STAT)#
ATOMIC_DEFINE(ATOM, VALUE)
atomically assigns the value of the variableATOM
toVALUE
. 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:
VALUE – Scalar of the same type as
ATOM
. If the kind is different, the value is converted to the kind ofATOM
.ATOM – Scalar coarray or coindexed variable of either integer type with
ATOMIC_INT_KIND
kind or logical type withATOMIC_LOGICAL_KIND
kind.STAT – (optional) Scalar default-kind integer variable.
- Standard:
Fortran 2008 and later; with
STAT
, TS 18508 or later- Class:
Atomic subroutine
- Syntax:
CALL ATOMIC_REF(VALUE, ATOM [, STAT])
- Example:
program atomic use iso_fortran_env logical(atomic_logical_kind) :: atom[*] logical :: val call atomic_ref (atom, .false.) ! ... call atomic_ref (atom, val) if (val) then print *, "Obtained" end if end program atomic
- See also:
ATOMIC_DEFINE — Setting a variable atomically, ATOMIC_CAS — Atomic compare and swap, ISO_FORTRAN_ENV, ATOMIC_FETCH_ADD — Atomic ADD operation with prior fetch, ATOMIC_FETCH_AND — Atomic bitwise AND operation with prior fetch, ATOMIC_FETCH_OR — Atomic bitwise OR operation with prior fetch, ATOMIC_FETCH_XOR — Atomic bitwise XOR operation with prior fetch