不可分機能はオペレーティングシステムからの実行時サポートを必要とする C11 および C++11 標準の新しい言語機能です。不可分機能の使用については、atomic_fence(3A)、atomic_flag(3A)、および stdatomic.h(3A) のマニュアルページを参照してください。
この実行時サポートの標準インタフェースはまだ存在しないため、gcc 不可分ライブラリと Oracle Developer Studio 不可分ライブラリの間にわずかな違いがあります。
GCC は、Oracle Solaris 11.3 および Oracle Linux 7.x 上の /usr/lib に含まれている libatomic.so と呼ばれる実行時ライブラリで不可分機能をサポートします。
Oracle Developer Studio 12.5 コンパイラは、libstatomic.so と呼ばれる新しい実行時ライブラリで不可分機能をサポートします。このライブラリは Oracle Developer Studio リリースにバンドルされていて、Oracle Solaris または Oracle Linux には含まれていません。これは、GCC および Oracle Developer Studio ライブラリをマージして Oracle Solaris に組み込むことができ、さらに Linux にバンドルされたライブラリが標準インタフェースに準拠するまでの暫定的な解決方法です。
libstatomic.so ライブラリはテスト済みであり、GCC 不可分ライブラリ libatomic との互換性で説明されているいくつかの例外を除き、libstatomic.so の GCC 4.8、4.9、および 5.1 リリースと互換性があります。
新しいコンパイラオプション –xatomic によって、プログラムおよびライブラリをリンクするときに GCC libatomic ライブラリまたは Oracle Developer Studio の libstatomic ライブラリのどちらを使用するかを指定できます。