2012-03-08 104 views
0

二叉树: 例如,如果我们需要并行处理树数据结构。我们可以产生一个线程来处理左侧节点,另一个线程处理右侧节点。现在两者都可以独立运行在相同的数据结构上。什么样的数据结构可以实现并行处理

对于链表,当然不可能有同样的并行性。

我在想,如果还有其他数据结构,那么我们就可以灵活地实现类似于二叉树的并行性了吗?

+0

这有什么错穿越到一个链表的中间,和产卵两个线程他们在平行元件工作?如果你的“处理”足够复杂,那可能是一场胜利。 – dasblinkenlight 2012-03-08 17:16:59

+0

只需将链接列表分块。平行度方面的微不足道的担忧。如果在处理过程中有别的东西在写给你的树,那么这个方便地左右分离的事实不会有帮助吗? – 2012-03-08 17:19:58

+0

取决于你所说的“处理”的意思是:在二叉树最常见的操作(查找,插入,删除...忽略再平衡)不能并行化有意义由于鸿沟和征服二叉树的性质。 – 2012-03-08 17:23:57

回答

2

什么类型的并行性?你可以总是平行读取,但是写入更复杂。如果被改变的唯一事情是存储在节点的数据,因此没有理由,你为什么不能通过为每个单独的节点,而不是整个列表锁定并行化LinkedListArray。但是如果结构的连接受到影响,那么还有更多事情需要担心。

答案取决于你想要做什么以及你如何设置锁定,条件等,但没有任何内在的可并行或不可并行。

+0

我认为,在这个答案的L2你的意思是不能,而不是可以吗? – 2012-03-08 17:43:42

+0

你是正确的先生。固定 – twain249 2012-03-08 18:15:20

0

当你谈论并行处理时,我脑海中浮现出两件事1)任务并行2)数据并行。我会在这里谈论第二个。

检查树木的超集:图形。许多基于智慧人群/集体智慧的巨大数据问题可以模拟为图表。使用Map Reduce框架对Graph进行并行处理将会让你感兴趣。

相关问题