は、私は、次のようないくつかのコードを持っている:C++アトミックの配列もアトミックである必要がありますか?
メッセージのように定義KMessageQueueのメンバーであるKMessageQueue::KMessageQueue()
{
messages = new atomic<KBuffer*>[MAX_MESSAGES];
for (int i = 0; i < MAX_MESSAGES; i++)
messages[i].store(nullptr);
}
:
std::atomic<KBuffer*>* messages;
だからメッセージアレイ内の各要素は原子であり、そしてIはからそれらを読み取ります別のスレッド。 しかし、配列ポインタ自体もアトミックである必要がありますか?コンストラクタが完了した後に別のスレッドがメッセージにアクセスしようとしましたが、メッセージにまだ値が割り当てられていないことを発見するだけでしたか?