funciones<atomic>
atomic_compare_exchange_strong
atomic_compare_exchange_strong_explicit
atomic_compare_exchange_weak
atomic_compare_exchange_weak_explicit
atomic_exchange
atomic_exchange_explicit
atomic_fetch_add
atomic_fetch_add_explicit
atomic_fetch_and
atomic_fetch_and_explicit
atomic_fetch_or
atomic_fetch_or_explicit
atomic_fetch_sub
atomic_fetch_sub_explicit
atomic_fetch_xor
atomic_fetch_xor_explicit
atomic_flag_clear
atomic_flag_clear_explicit
atomic_flag_test_and_set
atomic_flag_test_and_set_explicit
atomic_init
atomic_is_lock_free
atomic_load
atomic_load_explicit
atomic_signal_fence
atomic_store
atomic_store_explicit
atomic_thread_fence
kill_dependency
atomic_compare_exchange_strong
Realiza una operación atómica de comparación e intercambio.
template <class Ty>
inline bool atomic_compare_exchange_strong(
volatile atomic<Ty>* Atom,
Ty* Exp,
Value) noexcept;
template <class Ty>
inline bool atomic_compare_exchange_strong(
atomic<Ty>* Atom,
Ty* Exp,
Ty Value) noexcept;
Parámetros
Atom
Puntero a un objeto atomic
que almacena un valor de tipo Ty
.
Exp
Puntero a un valor de tipo Ty
.
Value
Valor de tipo Ty
.
Valor devuelto
true
si los valores son iguales; de lo contrario, es false
.
Comentarios
Este método realiza una operación atómica de comparación e intercambio mediante los argumentos implícitos memory_order.memory_order_seq_cst
. Para obtener más información, vea atomic_compare_exchange_strong_explicit
.
atomic_compare_exchange_strong_explicit
Realiza una atomic compare and exchange
operación.
template <class T>
inline bool atomic_compare_exchange_strong_explicit(
volatile atomic<Ty>* Atom,
Ty* Exp,
Ty Value,
memory_order Order1,
memory_order Order2) noexcept;
template <class Ty>
inline bool atomic_compare_exchange_strong_explicit(
atomic<Ty>* Atom,
Ty* Exp,
Ty Value,
memory_order Order1,
memory_order Order2) noexcept;
Parámetros
Atom
Puntero a un objeto atomic
que almacena un valor de tipo Ty
.
Exp
Puntero a un valor de tipo Ty
.
Value
Valor de tipo Ty
.
Order1
Primer argumento memory_order
.
Order2
Segundo argumento memory_order
. El valor de Order2
no puede ser memory_order_release
o memory_order_acq_rel
, ni puede ser más seguro que el valor de Order1
.
Valor devuelto
true
si los valores son iguales; de lo contrario, es false
.
Comentarios
Una atomic compare and exchange operation
compara el valor almacenado en el objeto al que apunta Atom
con el valor al que apunta Exp
. Si los valores son iguales, el valor almacenado en el objeto al que apunta Atom
se sustituye por Value
mediante el uso de una operación de lectura-modificación-escritura y la aplicación de las restricciones de ordenación de memoria especificadas por Order1
. Si los valores no son iguales, la operación reemplaza el valor al que apunta Exp
con el valor almacenado en el objeto al que apunta Atom
y aplica las restricciones de ordenación de memoria especificadas por Order2
.
atomic_compare_exchange_weak
Realiza una operación atómica débil de comparación e intercambio.
template <class Ty>
inline bool atomic_compare_exchange_strong(
volatile atomic<Ty>* Atom,
Ty* Exp,
Ty Value) noexcept;
template <class Ty>
inline bool atomic_compare_exchange_strong(
atomic<Ty>* Atom,
Ty* Exp,
Ty Value) noexcept;
Parámetros
Atom
Puntero a un objeto atomic
que almacena un valor de tipo Ty
.
Exp
Puntero a un valor de tipo Ty
.
Value
Valor de tipo Ty
.
Valor devuelto
true
si los valores son iguales; de lo contrario, es false
.
Comentarios
Este método realiza una operación atómica débil de comparación e intercambio que tiene argumentos implícitos memory_order.memory_order_seq_cst
. Para obtener más información, vea atomic_compare_exchange_weak_explicit
.
atomic_compare_exchange_weak_explicit
Realiza una operación atómica débil de comparación e intercambio.
template <class Ty>
inline bool atomic_compare_exchange_weak_explicit(
volatile atomic<Ty>* Atom,
Ty* Exp,
Ty Value,
memory_order Order1,
memory_order Order2) noexcept;
template <class Ty>
inline bool atomic_compare_exchange_weak_explicit(
atomic<Ty>* Atom,
Ty* Exp,
Ty Value,
memory_order Order1,
memory_order Order2) noexcept;
Parámetros
Atom
Puntero a un objeto atomic
que almacena un valor de tipo Ty
.
Exp
Puntero a un valor de tipo Ty
.
Value
Valor de tipo Ty
.
Order1
Primer argumento memory_order
.
Order2
Segundo argumento memory_order
. El valor de Order2
no puede ser memory_order_release
o memory_order_acq_rel
, ni puede ser más seguro que el valor de Order1
.
Valor devuelto
true
si los valores son iguales; de lo contrario, es false
.
Comentarios
Los tipos fuertes y débiles de una garantía atomic compare and exchange operation
que no almacenan el nuevo valor si los valores esperados y actuales no son iguales. El tipo fuerte garantiza que almacenará el nuevo valor si los valores esperados y actuales son iguales. A veces, el tipo débil puede devolver false
y no almacenar el nuevo valor incluso si los valores actuales y esperados son iguales. En otras palabras, la función devolverá false
, pero un examen posterior del valor esperado podría revelar que no cambió y, por lo tanto, debería haberse comparado como igual.
atomic_exchange
Usa Value
para sustituir el valor almacenado de Atom
.
template <class T>
inline Ty atomic_exchange(volatile atomic<Ty>* _Atom, Ty Value) noexcept;
template <class Ty>
inline T atomic_exchange(atomic<Ty>* Atom, Ty Value) noexcept;
Parámetros
Atom
Puntero a un objeto atomic
que almacena un valor de tipo Ty
.
Value
Valor de tipo Ty
.
Valor devuelto
Valor almacenado de Atom
antes del intercambio.
Comentarios
La función atomic_exchange
realiza una operación de lectura-modificación-escritura para intercambiar el valor almacenado en Atom
con Value
mediante memory_order.memory_order_seq_cst
.
atomic_exchange_explicit
Reemplaza el valor almacenado de Atom
con Value
.
template <class Ty>
inline Ty atomic_exchange_explicit(
volatile atomic<Ty>* Atom,
Ty Value,
memory_order Order) noexcept;
template <class Ty>
inline Ty atomic_exchange_explicit(
atomic<Ty>* Atom,
Ty Value,
memory_order Order) noexcept;
Parámetros
Atom
Puntero a un objeto atomic
que almacena un valor de tipo Ty
.
Value
Valor de tipo Ty
.
Order
Un objeto memory_order
.
Valor devuelto
Valor almacenado de Atom
antes del intercambio.
Comentarios
La función atomic_exchange_explicit
realiza una operación de lectura-modificación-escritura para intercambiar el valor almacenado en Atom
con Value
, dentro de las restricciones de memoria especificadas por Order
.
atomic_fetch_add
Agrega un valor a un valor existente almacenado en un objeto atomic
.
template <class T>
T* atomic_fetch_add(volatile atomic<T*>* Atom, ptrdiff_t Value) noexcept;
template <class T>
T* atomic_fetch_add(atomic<T*>* Atom, ptrdiff_t Value) noexcept;
Parámetros
Atom
Puntero a un objeto atomic
que almacena un puntero al tipo T
.
Value
Valor de tipo ptrdiff_t
.
Valor devuelto
Valor del puntero incluido en el objeto atomic
inmediatamente antes de que se realizara la operación.
Comentarios
La función atomic_fetch_add
realiza una operación de lectura-modificación-escritura para agregar de forma atómica Value
al valor almacenado en Atom
mediante la restricción memory_order.memory_order_seq_cst
.
Si el tipo atómico es atomic_address
, Value
tiene un tipo ptrdiff_t
y la operación trata el puntero almacenado como char *
.
Esta operación también está sobrecargada en los tipos de entero:
integral atomic_fetch_add(volatile atomic-integral* Atom, integral Value) noexcept;
integral atomic_fetch_add(atomic-integral* Atom, integral Value) noexcept;
atomic_fetch_add_explicit
Agrega un valor a un valor existente almacenado en un objeto atomic
.
template <class T>
T* atomic_fetch_add_explicit(
volatile atomic<T*>* Atom,
ptrdiff_t Value,
memory_order Order) noexcept;
template <class T>
T* atomic_fetch_add_explicit(
atomic<T*>* Atom,
ptrdiff_t Value,
memory_order Order) noexcept;
Parámetros
Atom
Puntero a un objeto atomic
que almacena un puntero al tipo T
.
Value
Valor de tipo ptrdiff_t
.
Valor devuelto
Valor del puntero incluido en el objeto atomic
inmediatamente antes de que se realizara la operación.
Comentarios
La función atomic_fetch_add_explicit
realiza una operación de lectura-modificación-escritura para agregar de forma atómica Value
al valor almacenado en Atom
, dentro de las restricciones memory_order
que están especificadas por Order
.
Si el tipo atómico es atomic_address
, Value
tiene un tipo ptrdiff_t
y la operación trata el puntero almacenado como char *
.
Esta operación también está sobrecargada en los tipos de entero:
integral atomic_fetch_add_explicit(
volatile atomic-integral* Atom,
integral Value,
memory_order Order) noexcept;
integral atomic_fetch_add_explicit(
atomic-integral* Atom,
integral Value,
memory_order Order) noexcept;
atomic_fetch_and
Realiza una operación &
bit a bit sobre un valor y un valor existente almacenado en un objeto atomic
.
template <class T>
inline T atomic_fetch_and(volatile atomic<T>* Atom, T Value) noexcept;
template <class T>
inline T atomic_fetch_and(volatile atomic<T>* Atom, T Value) noexcept;
Parámetros
Atom
Puntero a un objeto atomic
que almacena un valor de tipo T
.
Value
Valor de tipo T
.
Valor devuelto
Valor incluido en el objeto atomic
inmediatamente antes de que se realizara la operación.
Comentarios
La función atomic_fetch_and
realiza una operación de lectura-modificación-escritura para sustituir el valor almacenado de Atom
con un proceso bit a bit &
de Value
y el valor actual almacenado en Atom
mediante la restricción memory_order.memory_order_seq_cst
.
atomic_fetch_and_explicit
Realiza una operación &
bit a bit de un valor y un valor existente almacenado en un objeto atomic
.
template <class T>
inline T atomic_fetch_and_explicit(
volatile atomic<T>* Atom,
T Value,
memory_order Order) noexcept;
template <class T>
inline T atomic_fetch_and_explicit(
volatile atomic<T>* Atom,
T Value,
memory_order Order) noexcept;
Parámetros
Atom
Puntero a un objeto atomic
que almacena un valor de tipo T
.
Value
Valor de tipo T
.
Order
Un objeto memory_order
.
Valor devuelto
Valor incluido en el objeto atomic
inmediatamente antes de que se realizara la operación.
Comentarios
La función atomic_fetch_and_explicit
realiza una operación de lectura-modificación-escritura para reemplazar el valor almacenado de Atom
con un proceso bit a bit &
de Value
y el valor actual almacenado en Atom
, dentro de las restricciones de memoria especificadas por Order
.
atomic_fetch_or
Realiza una operación or
bit a bit sobre un valor y un valor existente almacenado en un objeto atomic
.
template <class T>
inline T atomic_fetch_or (volatile atomic<T>* Atom, T Value) noexcept;
template <class T>
inline T atomic_fetch_or (volatile atomic<T>* Atom, T Value) noexcept;
Parámetros
Atom
Puntero a un objeto atomic
que almacena un valor de tipo T
.
Value
Valor de tipo T
.
Valor devuelto
Valor incluido en el objeto atomic
inmediatamente antes de que se realizara la operación.
Comentarios
La función atomic_fetch_or
realiza una operación de lectura-modificación-escritura para sustituir el valor almacenado de Atom
con un proceso bit a bit or
de Value
y el valor actual almacenado en Atom
mediante memory_order.memory_order_seq_cst
.
atomic_fetch_or_explicit
Realiza una operación or
bit a bit sobre un valor y un valor existente almacenado en un objeto atomic
.
template <class T>
inline T atomic_fetch_or_explicit(
volatile atomic<T>* Atom,
T Value,
memory_order Order) noexcept;
template <class T>
inline T atomic_fetch_or_explicit(
volatile atomic<T>* Atom,
T Value,
memory_order Order) noexcept;
Parámetros
Atom
Puntero a un objeto atomic
que almacena un valor de tipo T
.
Value
Valor de tipo T
.
Order
Un objeto memory_order
.
Valor devuelto
Valor incluido en el objeto atomic
inmediatamente antes de que se realizara la operación.
Comentarios
La función atomic_fetch_or_explicit
realiza una operación de lectura-modificación-escritura para reemplazar el valor almacenado de Atom
con un proceso bit a bit or
de Value
y el valor actual almacenado en Atom
, dentro de las restricciones de memory_order
especificadas por Order
.
atomic_fetch_sub
Resta un valor de un valor existente almacenado en un objeto atomic
.
template <class T>
T* atomic_fetch_sub(
volatile atomic<T*>* Atom,
ptrdiff_t Value) noexcept;
template <class T>
T* atomic_fetch_sub(
atomic<T*>* Atom,
ptrdiff_t Value) noexcept;
Parámetros
Atom
Puntero a un objeto atomic
que almacena un puntero al tipo T
.
Value
Valor de tipo ptrdiff_t
.
Valor devuelto
Valor del puntero incluido en el objeto atomic
inmediatamente antes de que se realizara la operación.
Comentarios
La función atomic_fetch_sub
realiza una operación de lectura-modificación-escritura para restar de forma atómica Value
del valor almacenado en Atom
mediante la restricción memory_order.memory_order_seq_cst
.
Si el tipo atómico es atomic_address
, Value
tiene un tipo ptrdiff_t
y la operación trata el puntero almacenado como char *
.
Esta operación también está sobrecargada en los tipos de entero:
integral atomic_fetch_sub(volatile atomic-integral* Atom, integral Value) noexcept;
integral atomic_fetch_sub(atomic-integral* Atom, integral Value) noexcept;
atomic_fetch_sub_explicit
Resta un valor de un valor existente almacenado en un objeto atomic
.
template <class T>
T* atomic_fetch_sub_explicit(
volatile atomic<T*>* Atom,
ptrdiff_t Value,
memory_order Order) noexcept;
template <class T>
T* atomic_fetch_sub_explicit(
atomic<T*>* Atom,
ptrdiff_t Value, memory_order Order) noexcept;
Parámetros
Atom
Puntero a un objeto atomic
que almacena un puntero al tipo T
.
Value
Valor de tipo ptrdiff_t
.
Valor devuelto
Valor del puntero incluido en el objeto atomic
inmediatamente antes de que se realizara la operación.
Comentarios
La función atomic_fetch_sub_explicit
realiza una operación de lectura-modificación-escritura para restar Value
de forma atómica del valor almacenado en Atom
, dentro de las restricciones memory_order
especificadas por Order
.
Si el tipo atómico es atomic_address
, Value
tiene un tipo ptrdiff_t
y la operación trata el puntero almacenado como char *
.
Esta operación también está sobrecargada en los tipos de entero:
integral atomic_fetch_sub_explicit(
volatile atomic-integral* Atom,
integral Value,
memory_order Order) noexcept;
integral atomic_fetch_sub_explicit(
atomic-integral* Atom,
integral Value,
memory_order Order) noexcept;
atomic_fetch_xor
Realiza una operación exclusive or
bit a bit sobre un valor y un valor existente almacenado en un objeto atomic
.
template <class T>
inline T atomic_fetch_xor(volatile atomic<T>* Atom, T Value) noexcept;
template <class T>
inline T atomic_fetch_xor(volatile atomic<T>* Atom, T Value) noexcept;
Parámetros
Atom
Puntero a un objeto atomic
que almacena un valor de tipo T
.
Value
Valor de tipo T
.
Valor devuelto
Valor incluido en el objeto atomic
inmediatamente antes de que se realizara la operación.
Comentarios
La función atomic_fetch_xor
realiza una operación de lectura-modificación-escritura para sustituir el valor almacenado de Atom
con un proceso bit a bit exclusive or
de Value
y el valor actual almacenado en Atom
mediante memory_order.memory_order_seq_cst
.
atomic_fetch_xor_explicit
Realiza una operación bit a bit de exclusive or
sobre un valor y un valor existente almacenado en un objeto atomic
.
template <class T>
inline T atomic_fetch_xor_explicit(
volatile atomic<T>* Atom,
T Value,
memory_order Order) noexcept;
template <class T>
inline T atomic_fetch_xor_explicit(
volatile atomic<T>* Atom,
T Value,
memory_order Order) noexcept;
Parámetros
Atom
Puntero a un objeto atomic
que almacena un valor de tipo T
.
Value
Valor de tipo T
.
Order
Un objeto memory_order
.
Valor devuelto
Valor incluido en el objeto atomic
inmediatamente antes de que se realizara la operación.
Comentarios
La función atomic_fetch_xor_explicit
realiza una operación de lectura-modificación-escritura para reemplazar el valor almacenado de Atom
con un proceso bit a bit exclusive or
de Value
y el valor actual almacenado en Atom
, dentro de las restricciones de memory_order
especificadas por Order
.
atomic_flag_clear
Establece la marca bool
en un objeto atomic_flag
en false
, dentro de memory_order.memory_order_seq_cst
.
inline void atomic_flag_clear(volatile atomic_flag* Flag) noexcept;
inline void atomic_flag_clear(atomic_flag* Flag) noexcept;
Parámetros
Flag
Puntero a un objeto atomic_flag
.
atomic_flag_clear_explicit
Establece la marca bool
en un objeto atomic_flag
en false
, dentro de las restricciones especificadas memory_order
.
inline void atomic_flag_clear_explicit(volatile atomic_flag* Flag, memory_order Order) noexcept;
inline void atomic_flag_clear_explicit(atomic_flag* Flag, memory_order Order) noexcept;
Parámetros
Flag
Puntero a un objeto atomic_flag
.
Order
memory_order
.
atomic_flag_test_and_set
Establece la marca bool
en un objeto atomic_flag
en true
, dentro de las restricciones de la memory_order.memory_order_seq_cst
.
inline bool atomic_flag_test_and_set(volatile atomic_flag* Flag,) noexcept;
inline bool atomic_flag_test_and_set(atomic_flag* Flag,) noexcept;
Parámetros
Flag
Puntero a un objeto atomic_flag
.
Valor devuelto
Valor inicial de Flag
.
atomic_flag_test_and_set_explicit
Establece la marca bool
en un objeto atomic_flag
en true
, dentro de las restricciones especificadas memory_order
.
inline bool atomic_flag_test_and_set_explicit(volatile atomic_flag* Flag, memory_order Order) noexcept;
inline bool atomic_flag_test_and_set_explicit(atomic_flag* Flag, memory_order Order) noexcept;
Parámetros
Flag
Puntero a un objeto atomic_flag
.
Order
Un objeto memory_order
.
Valor devuelto
Valor inicial de Flag
.
atomic_init
Establece el valor almacenado en un objeto atomic
.
template <class Ty>
inline void atomic_init(volatile atomic<Ty>* Atom, Ty Value) noexcept;
template <class Ty>
inline void atomic_init(atomic<Ty>* Atom, Ty Value) noexcept;
Parámetros
Atom
Puntero a un objeto atomic
que almacena un valor de tipo Ty
.
Value
Valor de tipo Ty
.
Comentarios
atomic_init
no es una operación atómica. No es seguro para subprocesos.
atomic_is_lock_free
Especifica si las operaciones atómicas sobre un objeto atomic
no tienen bloqueos.
template <class T>
inline bool atomic_is_lock_free(const volatile atomic<T>* Atom) noexcept;
template <class T>
inline bool atomic_is_lock_free(const atomic<T>* Atom) noexcept;
Parámetros
Atom
Puntero a un objeto atomic
que almacena un valor de tipo T
.
Valor devuelto
true
si las operaciones atómicas sobre Atom
no tienen bloqueos; de lo contrario, false
.
Comentarios
Un tipo atómico no tiene bloqueos si ninguna operación atómica sobre ese tipo emplea bloqueos. Si esta función devuelve true
, el tipo se puede usar con seguridad en identificadores de señales.
atomic_load
Recupera el valor almacenado en un objeto atomic
.
template <class Ty>
inline Ty atomic_load(const volatile atomic<Ty>* Atom) noexcept;
template <class Ty>
inline Ty atomic_load(const atomic<Ty>* Atom) noexcept;
Parámetros
Atom
Puntero a un objeto atomic
que contiene un valor de tipo Ty
.
Valor devuelto
Valor recuperado que se almacena en Atom
.
Comentarios
atomic_load
usa implícitamente la memory_order.memory_order_seq_cst
.
atomic_load_explicit
Recupera el valor almacenado en un objeto atomic
, dentro de una memory_order
especificada.
template <class Ty>
inline Ty atomic_load_explicit(const volatile atomic<Ty>* Atom, memory_order Order) noexcept;
template <class Ty>
inline Ty atomic_load_explicit(const atomic<Ty>* Atom, memory_order Order) noexcept;
Parámetros
Atom
Puntero a un objeto atomic
que contiene un valor de tipo Ty
.
Order
memory_order
. No utilice memory_order_release
ni memory_order_acq_rel
.
Valor devuelto
Valor recuperado que se almacena en Atom
.
atomic_signal_fence
Actúa como una barrera, (una primitiva sincronización de memoria que aplica el orden entre operaciones de carga o almacenamiento), entre otras barreras de un subproceso de llamada que tienen identificadores de señales que se ejecutan en el mismo subproceso.
inline void atomic_signal_fence(memory_order Order) noexcept;
Parámetros
Order
Restricción de ordenación de memoria que determina el tipo de barrera.
Comentarios
El argumento Order
determina el tipo de barrera.
Valor | Descripción |
---|---|
memory_order_relaxed |
La barrera no tiene ningún efecto. |
memory_order_consume |
Es una barrera de adquisición. |
memory_order_acquire |
Es una barrera de adquisición. |
memory_order_release |
Es una barrera de liberación. |
memory_order_acq_rel |
Es una barrera de adquisición y de liberación. |
memory_order_seq_cst |
Es una barrera de adquisición y de liberación, y es coherente secuencialmente. |
atomic_store
Almacena de forma atómica un valor en un objeto atomic
.
template <class Ty>
inline Ty atomic_store_explicit(const volatile atomic<Ty>* Atom, Ty Value) noexcept;
template <class Ty>
inline Ty atomic_store_explicit(const atomic<Ty>* Atom, T Value) noexcept;
Parámetros
Atom
Puntero a un objeto atomic
que contiene un valor de tipo Ty
.
Value
Valor de tipo Ty
.
Comentarios
atomic_store
almacena Value
en el objeto al que apunta Atom
, dentro de la restricción memory_order.memory_order_seq_cst
.
atomic_store_explicit
Almacena de forma atómica un valor en un objeto atomic
.
template <class Ty>
inline Ty atomic_store_explicit(
const volatile atomic<Ty>* Atom,
Ty Value,
memory_order Order) noexcept;
template <class Ty>
inline Ty atomic_store_explicit(
const atomic<Ty>* Atom,
T Value,
memory_order Order) noexcept;
Parámetros
Atom
Puntero a un objeto atomic
que contiene un valor de tipo Ty
.
Value
Valor de tipo Ty
.
Order
memory_order
. No utilice memory_order_consume
, memory_order_acquire
ni memory_order_acq_rel
.
Comentarios
atomic_store
almacena Value
en el objeto al que apunta Atom
, dentro del memory_order
especificado por Order
.
atomic_thread_fence
Actúa como una barrera, (una primitiva sincronización de memoria que aplica orden entre las operaciones de carga o almacenamiento), sin una operación atómica asociada.
inline void atomic_thread_fence(memory_order Order) noexcept;
Parámetros
Order
Restricción de ordenación de memoria que determina el tipo de barrera.
Comentarios
El argumento Order
determina el tipo de barrera.
Valor | Descripción |
---|---|
memory_order_relaxed |
La barrera no tiene ningún efecto. |
memory_order_consume |
Es una barrera de adquisición. |
memory_order_acquire |
Es una barrera de adquisición. |
memory_order_release |
Es una barrera de liberación. |
memory_order_acq_rel |
Es una barrera de adquisición y de liberación. |
memory_order_seq_cst |
Es una barrera de adquisición y de liberación, y es coherente secuencialmente. |
kill_dependency
Quita una dependencia.
template <class Ty>
Ty kill_dependency(Ty Arg) noexcept;
Parámetros
Arg
Valor de tipo Ty
.
Valor devuelto
El valor devuelto es Arg
. La evaluación de Arg
no tiene una dependencia a la llamada de función. Al romper una posible cadena de dependencia, la función podría permitir que el compilador generara código más eficaz.