【发布时间】:2016-11-29 22:01:31
【问题描述】:
我有如下代码:
KMessageQueue::KMessageQueue()
{
messages = new atomic<KBuffer*>[MAX_MESSAGES];
for (int i = 0; i < MAX_MESSAGES; i++)
messages[i].store(nullptr);
}
其中messages是KMessageQueue的成员,定义为:
std::atomic<KBuffer*>* messages;
所以消息数组中的每个元素都是原子的,我从另一个线程中读取它们。 但是数组指针本身也需要是原子的吗?在构造函数完成后,另一个线程会尝试访问消息,却发现消息还没有被赋值吗?
【问题讨论】:
标签: c++ arrays multithreading atomic