gpt4 book ai didi

c++, c++11, std::atomic 成员函数

转载 作者:可可西里 更新时间:2023-11-01 15:41:33 28 4
gpt4 key购买 nike

我正在尝试使用 std::atomic 库。

  1. 专业非专业原子有什么区别成员函数?
  2. 以下函数之间有什么区别(如果有的话)?
  3. operator= 将值存储到原子对象(公共(public)成员函数)与store (C++11) 用非原子参数(公共(public)成员函数)原子地替换原子对象的值
  4. operator T() 从原子对象(公共(public)成员函数)加载一个值 v.s. load (C++11) 原子地获取原子对象(公共(public)成员函数)的值。
  5. operator+= 对比fetch_add
  6. operator-=fetch_sub
  7. operator&= vs. 获取并
  8. operator|= vs. fetch_or
  9. operator^= vs. fetch_xor
  10. 将变量声明为原子变量与将变量声明为原子变量有什么缺点?一个 非原子变量。例如,有什么缺点 std::atomic<int> xint x ?也就是说,一个原子变量的开销是多少?
  11. 哪个开销更大?一个原子变量,v.s.正常的 受互斥锁保护的变量?

这是对我的问题的引用。 http://en.cppreference.com/w/cpp/atomic/atomic

最佳答案

不是专家,但我会尝试:

  1. 特化(针对内置类型,如 int )包含额外的操作,如 fetch_add .非专业形式(用户定义的类型)将不包含这些。
  2. operator=返回它的参数,store才不是。此外,非运算符允许您指定内存顺序。标准说 operator=根据 store 定义.
  3. 同上,虽然它返回load的值.
  4. 同上
  5. 同上
  6. 同上
  7. 同上
  8. 同上
  9. 同上
  10. 他们做不同的事情。使用 int 是未定义的行为以你使用的方式 std::atomic_int .
  11. 您可以假设开销为 int <= std::atomic <= int and std::mutex其中 <=意味着“更少的开销”。所以它可能比使用互斥量锁定更好(特别是对于内置类型),但比 int 差。 .

关于c++, c++11, std::atomic 成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9552133/

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