将值分配给原子用户定义的结构
Assigning values to an array of atomic user defined structures
我正在尝试创建结构变量的原子数组。但是我无法将值分配给任何数组元素。
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如何工作。
相关文章:
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 使用用户定义函数的字符串反转
- 用户定义函数中的指针和输入
- Visual C++(VS2017)中用户定义的转换不明确
- 使用用户定义的参数调用future/async并调用类方法
- 带有用户定义类的c++折叠表达式
- g++用户定义的动态链接库上的全局new和delete运算符
- 直接在 unordered_map 的方法中使用哈希,而不是生成哈希的用户定义对象
- 修改"std::set"中用户定义类型的值
- 参数包构造函数在类模板中隐藏用户定义的转换
- MAKE:找不到包含的用户定义的头文件?
- C++:用户定义的显式类型转换函数错误
- 从用户定义的类生成格式字符串?
- 为用户定义的类正确调用复制构造函数/赋值运算符
- C++ 向量与用户定义的类比较?(==, <, >)
- STL 用户定义的二进制操作
- 将用户定义的类型与 std::vector 和 std::sort 一起使用
- 为什么用户定义的函数不按照给定的顺序对相同长度的元素进行排序?
- 使用宏编译时使用用户定义的数学函数,或者仅使用 c++ 中标准数学库中的函数
- C++:用户定义的类,以成员字段作为地址