数据结构并行添加序列删除所需

时间:2013-01-18 16:30:30

标签: algorithm data-structures parallel-processing gpgpu

我正在研究GPU上的动态分支粒子系统。我需要一个具有以下属性的并行数据结构:

  1. 一个线程必须能够在恒定时间内逐个删除元素。返回的元素对算法并不重要 - 只要在非空时返回某些元素。为了更加精彩,请更改为任意数量的线程。
  2. 任意数量的线程必须能够在恒定时间内向数据结构添加元素。请注意,某些锁定是允许的(并且是必需的),但它必须仍然按比例调整,与线程数无关。也就是说,更多的线程不应该减慢速度。
  3. 基本同步原语(互斥,信号量)以及可以使用它们实现的任何内容都可用。

    我玩弄了链表的想法,但这违反了条件二(因为m线程的加法是O(m),因为必须考虑锁定)。我不确定这样的数据结构是否存在 - 但我想我会问。

1 个答案:

答案 0 :(得分:1)

我不知道你希望如何组织数据(排序?FIFO?LIFO?),我不知道。或者确定我是否可以给你一个确切的答案。但是,您所描述的内容听起来像是无锁结构的定义。存在堆栈和队列的无锁实现,即使有很多线程同时修改结构,它也支持O(1)插入和删除。它们通常基于原子测试和设置操作。

如果锁是可以的,并且您只想要一个已排序的高度并发数据结构,请考虑查看并发跳过列表,它们提供O(log n)排序插入和删除多个活动线程。

希望这有帮助!