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