我正在研究 GPU 上的动态分支粒子系统。我需要一个具有以下属性的并行数据结构:
- 一个线程必须能够在恒定时间内一个一个地删除元素。返回的元素对算法并不重要——只要一些在非空时返回为了更棒,更改为任意数量的线程。
- 任意数量的线程必须能够在恒定时间内向数据结构添加元素。请注意,某些锁定是允许的(并且是必要的),但它仍然必须与线程数无关地扩展。即,更多线程不应该减慢它。
基本的同步原语(互斥体、信号量)以及可以使用它们实现的任何东西都是可用的。
我曾经玩弄过链表的想法,但这违反了条件二(因为对于 m 个线程,添加将是 O(m),因为必须考虑锁定)。我不确定这样的数据结构是否存在——但我想我会问。