#pragma omp atomic
OpenMP標準を実装するコンパイラーは、特別なハードウェア命令を利用して、ディレクティブアトミックに従って特定のメモリー更新を行い、高価なロックを回避することができますが、義務ではありません。http://gcc.gnu.org/onlinedocs/gccint/OpenMP.htmlによると、GCCは次のようにアトミックアップデートを実装しています。
可能な限り、組み込みのアトミック更新が使用されます。それが失敗した場合、コンペアアンドスワップループが試行されます。それも失敗した場合は、式の周りの通常のクリティカルセクションが使用されます。
特定のマシンとGCCバージョンで実際に使用されているのは3つのうちどれかをどのように判断できますか?プログラムのプロファイルを作成したり、生成されたバイトコードを調べたりせずに見つけるために設定できるGCCの冗長オプションはありますか?
特定のマシンの結果を予測できるように、アトミック加算/インクリメントなどの命令を提供するCPU /アーキテクチャをリストしたドキュメントはありますか?
さまざまなマシンでGCCバージョン4.2から4.6を使用しています。