如果我创建一个原子变量,线程之间是否对原子变量进行了所有操作?

Clockley1

这段代码能正常工作吗?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定义(请参阅此处
  • atomic_int在C11中被定义为to的typedef _Atomic int(请参见此处)。
  • std::atomic_int在C ++ 11中定义为to的typedef _Atomic int(请参见此处);在MS上,您可能会遇到一些问题
  • atomic_int 上面的以外(我认为)也是MS的东西
  • atomic_t由linux内核定义(请参阅此处此处
  • sig_atomic_t由GNU C库和其他库定义(请参见此处

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

是原子变量的多个赋值,一个原子操作?

在与原子加载和存储同步的线程之间共享变量是否安全?

我有一个代码,其中调用了Lateinit变量后对其进行了初始化,但我不知道如何

对原子变量进行非原子操作,反之亦然

进程之间是否只有一个静态变量,或者每个都有自己的静态变量?

如果我创建了一个角色,并将其分配给用户,但对角色进行了更改,那么我是否必须将其重新授予用户?

在CUDA内核的原子操作中从unsigned long long变量中减去一个

在 Python 中,线程之间共享类实例数据和方法,但只有一个特定变量

Java在两个线程之间共享一个变量

如果一个线程对并发集合之一中的一个对象进行了突变,将提供什么保证?

由于对sched.c进行了一些修改,我是否必须编译所有内核源代码?

RuntimeError:梯度运算所需的变量之一已通过就地操作进行了修改

线程内原子变量的使用

TIdHTTPServer.OnCommandGet线程内部是否使用全局原子变量?

如果只有一个线程使用互斥锁,线程之间的共享内存会被破坏吗?

是否可以安全地假设,如果我对async_read进行了两次调用,则仅在处理完第一个调用之后才处理第二个调用?

Python:我创建了2个列表,我对其中之一进行了排序,并且都对它们进行了排序

如果通过原子操作进行门控,非原子写入是否可以安全读取?

如果我只有一个活动,全局变量是否仍会导致NPE?

原子加法与具有多线程的多个变量(在C中)

在Jupyter笔记本中对Python变量进行了修改,尽管对此没有任何进一步的操作

Adam优化器错误:梯度运算所需的变量之一已通过就地操作进行了修改

如果当前值小于另一个值,则进行原子更新

对c ++ 11原子变量的哪些操作实际上是原子的?

创建一个新的变量,并检查它是否是空的,如果一个

尽管对目标变量和特征变量进行了标签编码,但创建混淆矩阵时出错

如果只写一个值,我需要原子的吗?

线程创建。我用最后一个线程覆盖了所有线程

使用别名导出带有空格的路径的环境变量时是否进行了歧义重定向?