为什么自由函数和成员函数都存在用于比较和交换操作?

Why do both free and member functions exist for compare and swap operations?

C++ 标准库具有用于原子比较和交换操作的 free functions and member functions

free functions 所述:

These functions are defined in terms of member functions of std::atomic:

  1. obj->compare_exchange_weak(*expected, desired)
  2. obj->compare_exchange_strong(*expected, desired)
  3. obj->compare_exchange_weak(*expected, desired, succ, fail)
  4. obj->compare_exchange_strong(*expected, desired, succ, fail)

有免费功能的原因是什么?只有成员函数还不够吗?他们做的不一样吗?

与 C stdatomic.h 操作一致。

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