gpt4 book ai didi

c++ - 为原子用户定义结构数组赋值

转载 作者:搜寻专家 更新时间:2023-10-31 02:09:25 24 4
gpt4 key购买 nike

我正在尝试创建结构变量的原子数组。但我无法为任何数组元素赋值。

   struct snap {
int number;
int timestamp;
};

atomic<snap> *a_table;

void writer(int i, int n, int t1)
{
int v, pid;
int t1;
a_table = new atomic<snap>[n];
pid = i;
while (true)
{
v = rand() % 1000;
a_table[pid % n]->number = v;
this_thread::sleep_for(chrono::milliseconds(100 * t1));
}
}

a_table[pid % n]->number = v 行显示错误(表达式必须具有指针类型)

最佳答案

a_table[pid % n]给你一个 std::atomic<snap> ,不是那种类型的指针。

但是,你不能直接做你想做的,你需要使用 atomic::store() .所以改变这个:

a_table[pid % n]->number = v;

为此:

snap tmp {v, myTimestamp};
a_table[pid % n].store(tmp, std::memory_order_relaxed);

PS:进一步阅读:如何std::atomic有效。

关于c++ - 为原子用户定义结构数组赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46571561/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com