Home > OS >  Atomic array in C11
Atomic array in C11

Time:09-03

Based on the reference, the _Atomic type specifier can not be used on arrays. Is there a standard way/workaround to be able to issue atomic_exchange calls for an object that is stored within the array?

CodePudding user response:

The standard prohibits to apply the _Atomic specifier to an array as a whole, for example this

typedef double at[5];
_Atomic(at) atomic_array; // constraint violation

But the array elements may well be atomic

_Atomic(double) atomic_array[5]; // valid

If you want the access to the array as a whole to be atomic, you'd have to encapsulate the array within a structure and then have the _Atomic around the structure.

  • Related