将值分配给原子用户定义的结构

Assigning values to an array of atomic user defined structures

本文关键字:用户 定义 结构 分配      更新时间:2023-10-16

我正在尝试创建结构变量的原子数组。但是我无法将值分配给任何数组元素。

   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如何工作。