如何在C++中实现线程安全引用计数

Fab*_*ian 19 c++ multithreading atomic reference-counting

如何在C++编程语言中在X86 CPU上实现高效且线程安全的引用计数系统

我总是遇到关键操作不是原子的问题,可用的X86 Interlock操作不足以实现引用计数系统.

以下文章介绍了此主题,但需要特殊的CPU指令:

http://www.ddj.com/architect/184401888

Mic*_*urr 11

如今,您可以使用Boost/TR1 shared_ptr <>智能指针来保持引用计数引用.

效果很好; 没有大惊小怪,没有麻烦.shared_ptr <>类负责处理refcount上所需的所有锁定.

  • 男人...要么我错过了什么,要么这个答案出了问题...为什么它被接受并多次投票,如果它甚至没有回答原来的问题 - 它只是暗示了其他的东西那已经有了OQ中同样事情的工作实现? (9认同)

moo*_*dow 6

在 VC++ 中,您可以使用_InterlockedCompareExchange

do
   read the count
   perform mathematical operation
   interlockedcompareexchange( destination, updated count, old count)
until the interlockedcompareexchange returns the success code.
Run Code Online (Sandbox Code Playgroud)

在其他平台/编译器上,对 MS 的 _InterlockedCompareExchange 公开的 LOCK CMPXCHG 指令使用适当的内部函数。