cstdatomicって?

先日GCCの4.4.0がリリースされたので、GCC-4.4のChangesを見ていた所、libstdc++の所にcstdatomicという知らないヘッダファイルを見つけたのでちょっと調べてみました。

Google グループによると次期C++規格に取り込まれるらしきもので、プリミティブな変数に対して排他的にアクセスするためのライブラリです。余程速度を気にするのでない限り、mutex自体を実装するような人しか使わないでしょう。(多分。私が読んだ本とかだと、排他制御にmutexを使いましょうというのは書いてあっても、compare and swapを使いましょうとかload link store conditionalを使いましょうとか書いてあるのはみたことない。プロセッサのマニュアル類では目にするけど。標準ライブラリになることで普及するのかも。普及してるのを私が知らないだけかも)

最近のプロセッサはレジスタ1個くらいのメモリ領域に対して排他アクセスするために必要となる専用命令を用意しています。CやC++からは、処理系&プロセッサ依存の組み込み関数やインラインアセンブラでその専用命令を使いつつ、プリミティブな変数をアトミックに操作する関数を自前で作ったりしてました。で、今まで各人が再発明していたであろうものを標準化しようという事のようです。

gcc-4.4.0/libstdc++-v3/include/c_global/cstdatomicのコピーライトを見る限り2008年初出なので、1年遅れで知ったことになります。「実は大昔からあったのに自分が知らなかっただけ?」と最初不安だったのですが、1年遅れ位なら許容範囲内ということで。

それはいいとして、このヘッダの中templateなstructだらけなんですが、ファイル名先頭のcってC言語のヘッダて意味じゃないんでしょうか?よく分からない…。