1

誰かが次の関数が何をしているのか説明できますか:

 inline int atomic_exchange_and_add( int * pw, int dv )
{
 int r;
  __asm__ __volatile__
 (
    "lock\n\t"
    "xadd %1, %0":
    "=m"( *pw ), "=r"( r ): // outputs (%0, %1)
    "m"( *pw ), "1"( dv ): // inputs (%2, %3 == %1)
    "memory", "cc" // clobbers
 );
}

以下はその呼び出しです:

void weak_release() // nothrow
{
    if( atomic_exchange_and_add( &weak_count_, -1 ) == 1 )
    {
        destroy();
    }
}

前もって感謝します

4

0 に答える 0