Sun Compiler equivalente al __sync_fetch_and_add de GCC? alias Oracle Studio 12.2

StackOverflow https://stackoverflow.com/questions/5891368

  •  28-10-2019
  •  | 
  •  

Pregunta

¿El Compilador Oracle (Sun) Studio 12.2 C/C ++/Fortran para Linux de 64 bits tiene un equivalente a la función __sync_fetch_and_add que se proporciona en GCC? Parece que no puedo encontrar el código de envoltura para la documentación Intel Atomics in the Sun ni los archivos .h en mi instalación de Sun Studio. Eso significa que soy solo malo en la búsqueda, o podría ser que no exista, no estoy seguro de cuál.

Necesito acceso a cualquier función de hardware atómico disponible en el Intel i7 utilizando los compiladores Sun C/C ++, como prueba y conjunto, comparación y intercambio, Fetch-and-Foo.

Esto se complica por el hecho de que no soy un programador de ensamblaje, y que este es un compilador Sun, no un compilador de GCC, por lo que copiar el código ASM de la implementación de código abierto de GCC no necesariamente va a funcionar, y finalmente es un compilador de 64 bits y Hardware, por lo que los ejemplos de 32 bits que se encuentran fácilmente no necesariamente funcionarán bien en el sistema de 64 bits.

Antecedentes: El propósito es implementar algunos programas concurrentes para Multicore que requieren estas atómicas de hardware particulares.

Gracias por leer.

No hay solución correcta

Otros consejos

Desde la documentación de Oracle, deberá incluir Atomic.h y usar uno de los siguientes:

uint_t atomic_add_int_nv(volatile uint_t *target, int delta);
uint64_t atomic_cas_64(volatile uint64_t *target, uint64_t cmp, uint64_t newval);
void atomic_or_32(volatile uint32_t *target, uint32_t bits);

... etc.

http://docs.oracle.com/cd/e19253-01/816-5168/6mbb3hr06/index.html

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top