在Linux中自动使用多线程

msz*_*abc 2 c linux multithreading gcc

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

如何在没有显式多线程编程的情况下提示gcc自动并行化程序?我可以在程序中给编译器提供哪些提示?

Joe*_*Joe 5

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

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