我正在阅读boost::shared_ptr
源代码,发现它使用此函数来增加 shared_ptr 的使用计数(引用计数):
inline void atomic_increment( int * pw )
{
//atomic_exchange_and_add( pw, 1 );
__asm__
(
"lock\n\t"
"incl %0":
"=m"( *pw ): // output (%0)
"m"( *pw ): // input (%1)
"cc" // clobbers
);
}
为什么不简单地使用operator++
来做到这一点?这会带来更好的性能吗?