0

私の gcc クロス コンパイラは、アトミック メモリ アクセスのビルトイン関数をサポートしていません。Sparc V8アーキテクチャのインラインアセンブリを使用して、次の関数を実装する方法:

long __sync_val_compare_and_swap (long *ptr, long oldval long newval)
{
....
}

これらのビルトインは、アトミックな比較とスワップを実行します。つまり、*ptr の現在の値が oldval の場合、newval を *ptr に書き込みます。

4

1 に答える 1

2

SPARC V8 には CAS 命令がないため、何らかの方法でエミュレートする必要があります。たとえば、 http: //www.oracle.com/technetwork/server-storage/solaris10/index-142944.html で CAS に C に似た疑似コードを使用し、静的な pthread ミューテックスを使用してアトミックな {} 領域の原子性を確保します。

于 2012-02-20T12:17:50.633 に答える