8

スタックの高度な同時待機なしの実装を使用する必要があるという問題があります。事前にすべてのメモリ(ガベージコレクションやmallocなし)を事前に割り当てる必要があり、スタックのサイズが制限されていることは許容されます(スタックがいっぱいの場合、プッシュはfalseを返す可能性があります)。

私はNirShavitのスタック実装に精通しています: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 に答える