私の gcc クロス コンパイラは、アトミック メモリ アクセスのビルトイン関数をサポートしていません。Sparc V8アーキテクチャのインラインアセンブリを使用して、次の関数を実装する方法:
long __sync_val_compare_and_swap (long *ptr, long oldval long newval)
{
....
}
これらのビルトインは、アトミックな比較とスワップを実行します。つまり、*ptr の現在の値が oldval の場合、newval を *ptr に書き込みます。