多线程与BFS,DFS搜索

时间:2011-02-25 16:05:15

标签: c++ multithreading

如何使用这样的多线程?

在使用BFS的多线程中,广度优先搜索,假设你运行10个线程,而源代码只有三个相邻的房间。

在这种情况下,多线程如何工作?不会只有三个线程可以通过,因为如果你把队列的“推”放在临界区,那么只有3个线程后发现的集合将是空的,这意味着只有三个线程可以通过那一点。

2 个答案:

答案 0 :(得分:2)

查看Parallel Boost Graph Library。它具有BFS和DFS的并行实现。

答案 1 :(得分:0)

当然,您应该根据相邻顶点的数量来分配线程。

如果一个线程发现所有相邻的顶点都已被处理或由其他线程处理,它应跳转到同步操作并在那里等待。

您可以使用共享变量来记录正在进行访问作业的线程数。将数字与线程第一行的相邻表的大小进行比较 - 如果它大于大小,则表示所有相邻顶点都已交给系统中的其他线程 - 线程无关。