为什么比较和交换操作都存在free和member函数?

时间:2018-01-21 15:26:25

标签: c++ c++11 atomic compare-and-swap

C ++标准库同时具有word boundariesfree functions用于原子比较和交换操作。

正如member functions所述:

  

这些函数是根据std :: atomic:

的成员函数定义的      
      
  1. obj-> compare_exchange_weak(*预期,期望)
  2.   
  3. obj-> compare_exchange_strong(*预期,期望)
  4.   
  5. obj-> compare_exchange_weak(*预期,期望,succ,失败)
  6.   
  7. obj-> compare_exchange_strong(*预期,期望,succ,失败)
  8.   

拥有免费功能的原因是什么?仅仅拥有会员功能还不够吗?他们不是做同样的事吗?

1 个答案:

答案 0 :(得分:6)

与C stdatomic.h操作保持一致。

如果使用自由函数,相同的原子操作代码将在C和C ++中起作用,只需要有条件地定义typedef。