ATOMIC_REF — Obtaining the value of a variable atomically#
-
ATOMIC_REF(VALUE, ATOM, STAT)#
ATOMIC_DEFINE(ATOM, VALUE)atomically assigns the value of the variableATOMtoVALUE. WhenSTATis 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_IMAGEand 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_KINDkind or logical type withATOMIC_LOGICAL_KINDkind.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