I understand that the following declaration creates an array of values, each of which is atomic:
_Atomic int x[10];
_Atomic int *x;
x = calloc(10, sizeof(int));
atomic_int
It's pointer to atomic integer, see http://en.cppreference.com/w/c/language/atomic .
To declare atomic pointer to an integer, you would need to put the keyword right before the variable:
int * _Atomic x;
Note that the example with calloc may work on common platforms but generally there is no warranty that the types of non-atomic and atomic variables are the same. So it's necessary to initialize the variables with ATOMIC_VAR_INIT
:
x = calloc(10, sizeof(_Atomic int));
for (...) ATOMIC_VAR_INIT(x[i]);