5
我有如下所示的一些代碼:C++一個原子陣列是否也需要是原子的?
KMessageQueue::KMessageQueue()
{
messages = new atomic<KBuffer*>[MAX_MESSAGES];
for (int i = 0; i < MAX_MESSAGES; i++)
messages[i].store(nullptr);
}
其中消息是KMessageQueue的成員,定義爲:
std::atomic<KBuffer*>* messages;
所以消息數組中的每個元素是原子的,我從讀取它們另一個線程。 但數組指針本身也需要是原子嗎?在構造函數完成之後,另一個線程是否可以嘗試訪問消息,只發現消息還沒有被賦值?