我目前无法正确理解新std::atomic
类型的用法。对于我的情况,我有以下假设:
- 我有一个
uint64_t
存储在内存中的值的连续内存位置 - 我有两种访问简单增量和原子增量
最初我实现了这样的方法
uint64_t inc(const size_t pos) { return _data[pos]++; }
uint64_t atomic_inc(const size_t pos) { return __sync_fetch_and_add(&_data[pos], 1); }
现在我想将它正确地移植到 C++11 并且想知道我应该如何正确处理它。根据我对std::atomic_fetch_add的理解,基本上需要一个原子整数值来执行此操作。但是,我需要如何正确实现这一点,以便我可以使用原子变量指向一个位置并增加值?
谢谢!