在他的Herb Sutter博客中写道:“因为在优化的shared_ptr实现中,智能指针引用计数的递增通常可以被优化为与普通递增相同 - 只是普通的递增指令,而没有屏障,在生成的代码中。”
然而,“递减必须是原子递减或等效的,这会生成更昂贵的特殊处理器内存指令,它们本身就会诱发内存栅栏限制,进一步优化周围代码。”
这段文字是关于shared_ptr的实现,我不确定他的评论是否仅适用于此,还是普遍适用。从他的措辞中,我得出结论它是普遍适用的。
但是当我考虑它时,我只能想到“更昂贵的递减”,当
因此,我想知道原子操作
然而,“递减必须是原子递减或等效的,这会生成更昂贵的特殊处理器内存指令,它们本身就会诱发内存栅栏限制,进一步优化周围代码。”
这段文字是关于shared_ptr的实现,我不确定他的评论是否仅适用于此,还是普遍适用。从他的措辞中,我得出结论它是普遍适用的。
但是当我考虑它时,我只能想到“更昂贵的递减”,当
if(counter==0)
紧随其后时 - 这可能是shared_ptr的情况。因此,我想知道原子操作
++counter
是否(通常)始终比--counter
快,还是仅仅因为它与shared_ptr
一起使用if(--counter==0)...
?