在Linux中自动使用多线程

时间:2015-03-06 09:17:34

标签: c linux multithreading gcc

我有以下问题: 我在强大的Intel CPU(8核)上工作。对于这个目标,我使用gcc从源代码编译一个旧的内部C应用程序。它是单线程应用程序,因此创建二进制文件并不能从多核cpu和单核运行几乎100%负载中获得任何优势。有没有办法在不改变源代码的情况下利用其他核心?

如果没有明确的多线程编程,如何提示gcc自动并行化程序?我可以在程序中给编译器提供哪些提示?

1 个答案:

答案 0 :(得分:5)

您可以尝试使用gcc标志自动并行化使用pthreads的循环(-floop-parallelize-all -ftree-parallelize-loops = 8)。你必须要小心如何编写代码,编译器必须知道循环的每次迭代之间没有依赖关系才能并行化。

但说实话,你没有得到任何免费的东西,除非你的代码是为多处理器设计的,那么你永远不会获得太多。