我正在研究GPU上的动态分支粒子系统。我需要一个具有以下属性的并行数据结构:
基本同步原语(互斥,信号量)以及可以使用它们实现的任何内容都可用。
我玩弄了链表的想法,但这违反了条件二(因为m线程的加法是O(m),因为必须考虑锁定)。我不确定这样的数据结构是否存在 - 但我想我会问。
答案 0 :(得分:1)
我不知道你希望如何组织数据(排序?FIFO?LIFO?),我不知道。或者确定我是否可以给你一个确切的答案。但是,您所描述的内容听起来像是无锁结构的定义。存在堆栈和队列的无锁实现,即使有很多线程同时修改结构,它也支持O(1)插入和删除。它们通常基于原子测试和设置操作。
如果锁是可以的,并且您只想要一个已排序的高度并发数据结构,请考虑查看并发跳过列表,它们提供O(log n)排序插入和删除多个活动线程。
希望这有帮助!