我想做这个:
union {
std::atomic<uint128_t> u128;
struct {
std::atomic<uint64_t> u64_1;
std::atomic<uint64_t> u64_2;
};
};
几个线程将读取和写入联合的两个部分。
安全吗?
编辑:我使用 Linux,x86_64,clang 3.3
Edit2:我希望能够增加和减少 u64_1,读取 u64_2,写入 u128(compare_exchange)
Edit3:如果我使用原子内置函数怎么办?联合将如下所示:
union {
uint128_t u128;
struct {
uint64_t u64_1;
uint64_t u64_2;
};
};
u64_1 将映射到 u128 的前半部分,而 u64_2 将映射到后半部分。