Herb Sutter在他的博客中写道
[...] 因为增加智能指针引用计数 通常可以优化为与优化
shared_ptr
实现中的普通增量相同——在生成的代码中只是一条普通的增量指令,没有栅栏。但是,减量必须是原子减量或等效物,它会生成特殊的处理器内存指令,这些指令本身更昂贵,并且在此之上会导致内存栅栏限制优化周围代码。
文本是关于实施的shared_ptr
,我不确定他的评论是否仅适用于此或一般情况下。从他的表述中,我推测它是一般的。
但是当我想到它时,我只能在if(counter==0)
紧随其后想到“更昂贵的减量”——这可能是shared_ptr
.
因此,我想知道原子操作++counter
是否(通常)总是比快--counter
,还是仅仅因为它if(--counter==0)...
与shared_ptr
?