小さなカウンター (最大 10) が必要です。
私はアトミックを使いたくありません(アトミックのオーバーヘッドのため)。
これにはどのタイプを使用できますか?
時期尚早の最適化を行っている可能性がありますが、残念ながら現在、完全な運用環境 (マルチスレッド環境) をシミュレートすることはできません。
Ubuntu x86 での実行
小さなカウンター (最大 10) が必要です。
私はアトミックを使いたくありません(アトミックのオーバーヘッドのため)。
これにはどのタイプを使用できますか?
時期尚早の最適化を行っている可能性がありますが、残念ながら現在、完全な運用環境 (マルチスレッド環境) をシミュレートすることはできません。
Ubuntu x86 での実行
Atomic は使用するのに適したものであり、それを行うための最速の方法です。アーキテクチャが単一の命令でアトミック更新を実行できる場合、それがアトミック型の実装方法です。
1つのスレッドからのみカウンターに書き込み、他のすべてのスレッドはカウンターのみを読み取る場合、int
ほとんどのCPUにはアトミックインクリメント命令があり、新しい値をメモリに書き戻すため、ほとんどのプラットフォームでを使用できます。アトミックであること。
ただし、規格はこれを保証するものではありません。アトミック性を保証したい場合は、アトミックを使用する必要があります。コンパイラは、インクリメント操作に明示的なロックが必要かどうかを認識し、オーバーヘッドを回避するのに十分なほど賢いので、そうすることでそれほどオーバーヘッドはありません。