我有一段代码使用 Boost 线程来加快计算速度,但我需要对其进行调试并希望串联运行它们,而不是并行运行。我怎么做?
问问题
418 次
5 回答
1
您可以为每个线程创建一个信号量,然后在主线程中向第一个信号量发出信号,每个线程可以在其末尾发出下一个信号量。
但是,您为什么需要以这种方式调试您的应用程序?在所有线程都运行的情况下调试应用程序非常有用,这样您就可以查看是否发生任何竞争条件或类似情况。
于 2010-08-30T22:45:31.623 回答
1
在所有线程中放置断点。您的调试器应该有一个命令来单步执行或仅启动一个线程。您的其余线程将保持挂起状态,因此它们不会干扰您的单线程调试。一旦一个线程终止,您可以恢复所有线程,也可以在下一个线程中继续调试。
于 2010-08-30T23:15:31.123 回答
1
除非我遗漏了什么,否则只需使用单个线程对其进行调试。除非你得到正确的算法,否则忘记多线程。
于 2010-08-30T21:56:35.053 回答
1
假设您的意思是“加快计算速度”,那么串联运行的线程根本不会提高性能。实际上,这会降低线程开销的性能,因为您没有并行化任何工作。
如果您倾向于串联运行它们,只需确保每个线程都等待当前线程完成执行,然后再允许另一个线程运行?我可能在这里遗漏了一些东西。
于 2010-08-30T22:06:37.267 回答
0
Assign only a single processor core to your process. On Windows, you can do so with SetProcessAffinityMask
于 2010-08-31T07:39:44.417 回答