gpt4 book ai didi

c++ - 对原子变量的非原子操作,反之亦然

转载 作者:行者123 更新时间:2023-12-05 02:45:13 26 4
gpt4 key购买 nike

<分区>

给定以下代码:

static int x;

static void f() {
for (int i = 0; i < 100; ++i)
atomic_fetch_add(&x, 3);
}

进一步,假设 f 被两个线程同时调用。 C/C++ 内存模型是否保证在所有硬件平台上结果始终为 600

如果我把它改成下面的呢?结果是否仍然保证在所有硬件平台上都是 600

static atomic_int a_x;

static void f() {
for (int i = 0; i < 100; ++i)
a_x += 3;
}

或者结果无法保证,我不应该将原子操作与非原子类型混合使用,反之亦然?

PS:我在这里使用了 int 类型,但我的问题适用于任何类型 T_Atomic T

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