2012-03-22 4 views
7

整数型のstd :: atomicの完全な特殊化は、+=,-=などの算術複合体の代入演算子を提供しますが、*=または/=はありません。標準はこれを述べていますが、私が見る限り、理由はありません。原子オペレーションライブラリの後ろにある推論に精通している人が、このことを明らかにしてくれましたか?なぜstd :: atomic <integral>の特殊化は乗算と除算の代入演算子を提供しますか?

答えて

9

これはハードウェアに関連していると思います。多くのプラットフォームには+=を処理するアトミックがありますが、私は*=を提供しているものはわかりません。ロックでこれを実装するのは簡単ですが、std::atomicというインターフェイスは、非常に高価な操作で何とか安価な同じレベルの操作でミキシングされます。

+0

それは私の疑いでした。私はそれがビットごとのAND、ORおよびXOR演算があるが、ビットシフトの演算はないのではないかと推測している。 – juanchopanza

関連する問題