私は現在、新しいstd::atomic
型の使用法を正しく理解するのに苦労しています。私の場合、次の仮定があります。
uint64_t
メモリに格納された値の連続したメモリ位置があります- 単純なインクリメントとアトミックインクリメントの2種類のアクセスがあります
もともと私はこのような方法を実装しました
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の私の理解から、これを行うには基本的にアトミック整数値が必要です。ただし、アトミック変数を使用して場所を指定し、値をインクリメントできるように、これを正しく実装するにはどうすればよいですか?
ありがとう!