c++ - sirve - Funciones de comparación e intercambio de alto nivel(CAS)
para que sirve c++ (7)
Dejaré que otros enumeren las diversas API específicas de la plataforma, pero para referencia futura en C ++ 09 obtendrá el
atomic_compare_exchange()
operación en la nueva "Biblioteca de operaciones atómicas".
Me gustaría documentar qué funciones de alto nivel (es decir, C ++ no ensamblador en línea) o macros están disponibles para las primitivas atómicas Compare And Swap (CAS) ...
Por ejemplo, WIN32 en x86 tiene una familia de funciones _InterlockedCompareExchange
en el encabezado <_intrin.h>
.
En Solaris, existe "atomic.h" (es decir, <sys / atomic.h> ).
MacOS X tiene OSAtomic.h
glib, una biblioteca de sistema común en sistemas Linux y Unix (pero también compatible con Windows y Mac OS X), define varias operaciones atómicas , incluidas g_atomic_int_compare_and_exchange y g_atomic_pointer_compare_and_exchange .
java tiene esta operación CAS, también
ver aquí
hay usos prácticos para esto, como una tabla hash sin bloqueo utilizada en el sistema multiprocesador
Ha habido una serie de documentos del grupo de trabajo sobre este tema que proponen cambios a la Biblioteca Estándar de C ++. WG N2427 ( C ++ Atomic Types and Operations ) es el más reciente, que contribuye a la sección 29 - Biblioteca de operaciones atómicas - del estándar pendiente.
GCC tiene algunas incorporaciones para accesos atómicos , también.