Fab*_*ian 19 c++ multithreading atomic reference-counting
如何在C++编程语言中在X86 CPU上实现高效且线程安全的引用计数系统?
我总是遇到关键操作不是原子的问题,可用的X86 Interlock操作不足以实现引用计数系统.
以下文章介绍了此主题,但需要特殊的CPU指令:
Mic*_*urr 11
如今,您可以使用Boost/TR1 shared_ptr <>智能指针来保持引用计数引用.
效果很好; 没有大惊小怪,没有麻烦.shared_ptr <>类负责处理refcount上所需的所有锁定.
在 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 指令使用适当的内部函数。
| 归档时间: |
|
| 查看次数: |
15473 次 |
| 最近记录: |