它并不局限于单线程的使用。通常,在这种情况下,互锁操作是可行的(例如InterlockedIncrement和InterlockedDecrement on Win32)。尽管对象引用计数在任何情况下都应该正确工作,但我想为单线程的使用优化它。互锁操作比标准算术操作要重得多。根据我的测量结果,一个互锁操作(发出完整的内存屏障)在我的“典型”CPU上需要大约40个CPU周期,而标准算术运算则低于任何测量精度(这要感谢CPU缓存)。
在内存分配方面也有类似的技术。有堆实现,如"TCMalloc&qu
我知道内部使用了互锁API,用于AddRef和COM对象的发布方法,以增加/减少引用计数线程安全。但是我在这里试图理解的是,使用互锁API是足够的,或者我们需要一些其他的同步对象,例如Mutex。到目前为止,我看到的所有示例代码都只使用了互锁API。内部释放方法- At line#9 - m_lRef =1 At lin