8

我有一个问题需要我使用高并发、无等待的堆栈实现。我必须提前预分配所有内存(没有垃圾收集或 malloc),并且堆栈的大小是可以接受的(如果堆栈已满,则推送可能返回 false)。

我熟悉 Nir ​​Shavit 的堆栈实现:http ://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.156.8728 ...但这依赖于链表和垃圾收集。我需要基于数组的东西。

看起来 ACM 上有一个:http: //dl.acm.org/citation.cfm?id= 1532611虽然我对低下载率和引用持怀疑态度。

理想的答案是参考代码(在 C/C++ 中)我可以简单地窃取:-)

4

1 回答 1

1

你看过windows DDI InterlockedPushEntrySList() 和InterlockedPopEntrySList() 吗?它们不是基于数组的,但它们是无锁的,并使用处理器原子指令从堆栈中添加和删除项目。它不是免费等待,但也许它对你有用......

于 2013-01-20T08:00:14.440 回答