为什么自由函数和成员函数都存在用于比较和交换操作?
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:
- obj->compare_exchange_weak(*expected, desired)
- obj->compare_exchange_strong(*expected, desired)
- obj->compare_exchange_weak(*expected, desired, succ, fail)
- obj->compare_exchange_strong(*expected, desired, succ, fail)
有免费功能的原因是什么?只有成员函数还不够吗?他们做的不一样吗?
与 C stdatomic.h
操作一致。
如果您使用自由函数,相同的原子操作代码将在 C 和 C++ 中工作,只需要有条件地定义一个 typedef。
C++ 标准库具有用于原子比较和交换操作的 free functions and member functions。
如 free functions 所述:
These functions are defined in terms of member functions of std::atomic:
- obj->compare_exchange_weak(*expected, desired)
- obj->compare_exchange_strong(*expected, desired)
- obj->compare_exchange_weak(*expected, desired, succ, fail)
- obj->compare_exchange_strong(*expected, desired, succ, fail)
有免费功能的原因是什么?只有成员函数还不够吗?他们做的不一样吗?
与 C stdatomic.h
操作一致。
如果您使用自由函数,相同的原子操作代码将在 C 和 C++ 中工作,只需要有条件地定义一个 typedef。