C++/g++ : Concurrent program

标签 c++ g++ parallel-processing concurrency flags

我有一个据说可以并行工作的 C++ 程序(源代码)。但是,如果我用 g++ 编译它(我使用的是 Ubuntu 10.04 和 g++ 4.4.3)并运行它,我的两个 CPU 内核之一会满载,而另一个则“什么都不做”。

所以我和给我程序的人谈了谈。有人告诉我,我必须为 g++ 设置特定的标志,以便为 2 个 CPU 内核编译程序。但是,如果我查看代码,我找不到任何指向并行性的行。

所以我有两个问题:

  • 是否有任何用于多线程应用程序的 C++ 内在函数,即是否可以在没有任何额外库的情况下编写并行代码(因为我没有发现包含任何非标准库)?
  • 是否真的有 g++ 标志告诉编译器为 2 个 CPU 内核编译程序并编译它以使其并行运行(如果:它们是什么)?

最佳答案

据我所知,除了循环迭代的并行化 (-ftree-parallelize-loops) 之外,没有旨在使单线程应用程序利用并行性的编译器标志(这绝对是一个重要的操作),它仍然必须是小心启动;尽管如此,即使没有明确的线程创建,也可能有一些 OpenMP并行化多个指令序列的指令。

关于C++/g++ : Concurrent program,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3035609/

相关文章:

c++ - SSL 套接字释放和关闭

c++ - 最短路径、禁止左转、打印路径

c++ - GNU gcc 和 g++

c# - 递归和 Rx 并行性

algorithm - 并行化串行算法

c# - 从另一个线程更新 ObservableCollection 的最佳方法是什么?

c++ - ISO C++ 禁止初始化 private const unsigned long?

c++ - TBB parallel_for 线程池

c++ - solaris 上支持 C++11/14 的 GNU gcc/g++ 编译器版本

c++ - -std=c++11 标志在 gcc/g++ 4.4.6 中无法识别