gpt4 book ai didi

c - 如果我创建一个原子变量,线程之间是否所有对该变量的操作都是原子的?

转载 作者:太空宇宙 更新时间:2023-11-03 23:26:29 25 4
gpt4 key购买 nike

这段代码能正常工作吗?atomic_int 与 _Atomic(int) 之间有什么区别

  struct a {
int xyz;
volatile _Atomic(unsigned int) status;
int eee;
};

threadOne(void *)
{
a->status |= QW;
}


threadTwo(void *)
{
a->status |= ER;
}

最佳答案

是的,它将正常工作,即 |= 操作将是原子的

就事物的定义位置而言(这超出了您的要求):

  • _Atomic 由 C11 定义(参见 here )
  • atomic_int 在 C11 中被定义为 _Atomic int 的类型定义(参见 here )。
  • std::atomic_int 在 C++11 中定义为 _Atomic int 的类型定义(参见 here );在 MS 上你可能有 some problems
  • atomic_int 除了上述之外(我认为)也是 MS 的东西
  • atomic_t 由 linux 内核定义(参见 herehere )
  • sig_atomic_t 由 GNU C 库和其他人定义(参见 here)

关于c - 如果我创建一个原子变量,线程之间是否所有对该变量的操作都是原子的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26109053/

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