Ich habe einige Code wie folgt aus:C++ Muss ein Array von Atomen auch atomar sein?
KMessageQueue::KMessageQueue()
{
messages = new atomic<KBuffer*>[MAX_MESSAGES];
for (int i = 0; i < MAX_MESSAGES; i++)
messages[i].store(nullptr);
}
Wo Meldungen Mitglied KMessageQueue ist, wie folgt definiert:
std::atomic<KBuffer*>* messages;
So jedes Element in der Nachrichten-Array ist atomar, und ich las sie aus ein anderer Thread. Aber muss der Array-Zeiger selbst auch atomar sein? Kann ein anderer Thread versuchen, nach Abschluss des Konstruktors auf eine Nachricht zuzugreifen, um festzustellen, dass den Nachrichten noch kein Wert zugewiesen wurde?