如何使Boost线程串行运行,而不是并行运行?

时间:2010-08-30 21:54:30

标签: c++ boost-thread

我有一段代码使用Boost线程加速计算,但我需要调试它并希望串行运行它们,而不是并行运行。我该怎么做?

5 个答案:

答案 0 :(得分:1)

除非我遗漏了什么,否则只需使用一个线程进行调试即可。忘记多线程,除非你得到正确的算法。

答案 1 :(得分:1)

假设您的意思是“加快计算速度”,那么串联运行的线程根本无法提供性能。实际上,因为你没有并行化任何工作,它会花费你对线程开销的性能。

如果您倾向于连续运行它们,只需确保每个人等待当前线程完成执行,然后再让其他线程运行?我可能在这里遗漏了一些东西。

答案 2 :(得分:1)

您可以为每个线程创建一个信号量,然后在主线程中发出第一个信号量的信号,每个线程都可以在其结束时发出下一个信号量的信号。

但是,为什么你需要以这种方式调试你的应用程序?在所有线程运行的情况下调试应用程序非常有用,这样您就可以查看是否有任何竞争条件发生,或类似的事情。

答案 3 :(得分:1)

在所有线程中放置断点。您的调试器应该有一个命令来单步执行或只启动一个线程。其余的线程将保持挂起状态,因此它们不会干扰您的单线程调试。一个线程终止后,您可以恢复所有线程,或者您可以在下一个线程中继续调试。

答案 4 :(得分:0)

仅为您的流程分配单个处理器核心。在Windows上,您可以使用SetProcessAffinityMask

执行此操作