什么样的数据结构可以实现并行处理

时间:2012-03-08 17:13:01

标签: c++ c multithreading algorithm parallel-processing

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

链接列表当然不可能具有相同的并行性。

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

2 个答案:

答案 0 :(得分:2)

什么类型的并行性?你总是可以并行读取,但是对于写入来说它更复杂。如果唯一要改变的是存储在节点中的数据,则没有理由不通过为每个单独节点而不是整个节点创建锁来并行化LinkedListArray。名单。但如果结构的连接受到影响,那么还有许多事情需要担心。

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

答案 1 :(得分:0)

当你谈到并行处理时,我会想到两件事:1)任务并行2)数据并行。我将在这里讨论第二个。

检查树的超集:图表。基于智慧群体/集体智慧的许多巨大数据问题可以建模为图形。使用Map Reduce框架并行处理Graph对您来说很有意思。