L'equivalente del compilatore Sun di __sync_fetch_and_add di GCC? aka Oracle Studio 12.2

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

  •  28-10-2019
  •  | 
  •  

Domanda

Il compilatore Oracle (Sun) Studio 12.2 C/C ++/FORTRAN per Linux 64-bit ha un equivalente alla funzione __Sync_fetch_and_add fornita in GCC? Non riesco a trovare il codice wrapper per Intel Atomics nella documentazione Sun né i file .h nella mia installazione Sun Studio. Ciò significa che sono solo cattivo nella ricerca, o potrebbe non esistere, non sono sicuro di quale.

Mi è necessario accedere a qualsiasi funzione hardware atomica sia disponibile sui Intel I7 utilizzando i compilatori Sun C/C ++, come test-and-set, confronto e swap, prese e foo.

Ciò è complicato dal fatto che non sono un programmatore di assemblaggi e che questo è un compilatore solare, non un compilatore GCC, quindi copiare il codice ASM dall'implementazione open source di GCC non funzionerà necessariamente, e infine è il compilatore a 64 bit e Hardware, quindi gli esempi a 32 bit che si trovano facilmente non funzionano necessariamente sul sistema a 64 bit.

Contesto: lo scopo è l'implementazione di alcuni programmi simultanei per il multicore che richiedono queste particolari atomiche hardware.

Grazie per aver letto.

Nessuna soluzione corretta

Altri suggerimenti

Dalla documentazione Oracle, dovrai includere Atomic.h e utilizzare una delle seguenti:

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);

... eccetera.

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top