-1

小さなカウンター (最大 10) が必要です。

私はアトミックを使いたくありません(アトミックのオーバーヘッドのため)。

これにはどのタイプを使用できますか?

時期尚早の最適化を行っている可能性がありますが、残念ながら現在、完全な運用環境 (マルチスレッド環境) をシミュレートすることはできません。

Ubuntu x86 での実行

4

2 に答える 2

6

Atomic は使用するのに適したものであり、それを行うための最速の方法です。アーキテクチャが単一の命令でアトミック更新を実行できる場合、それがアトミック型の実装方法です。

于 2012-12-04T19:01:19.700 に答える
0

1つのスレッドからのみカウンターに書き込み、他のすべてのスレッドはカウンターのみを読み取る場合、intほとんどのCPUにはアトミックインクリメント命令があり、新しい値をメモリに書き戻すため、ほとんどのプラットフォームでを使用できます。アトミックであること。

ただし、規格はこれを保証するものではありません。アトミック性を保証したい場合は、アトミックを使用する必要があります。コンパイラは、インクリメント操作に明示的なロックが必要かどうかを認識し、オーバーヘッドを回避するのに十分なほど賢いので、そうすることでそれほどオーバーヘッドはありません。

于 2012-12-04T18:52:09.203 に答える