【问题标题】:Is there a way to compile multi-threaded C++ program with single-threaded version library?有没有办法用单线程版本库编译多线程 C++ 程序?
【发布时间】:2015-07-06 08:39:12
【问题描述】:

我正在尝试做一个代码自动编译和自动评估程序。我想比较一个程序在多线程模式和单线程模式下的效率差异。所以我想知道是否有一个编译选项允许我用伪多线程库(它实际上使用单线程实现)编译多线程程序,以从多线程程序派生单线程程序。

【问题讨论】:

  • 只需将你的线程池换成一个排队的内联执行器。
  • @KerrekSB 这种简单的方法不是只适用于独立工作的线程吗?另一方面,评估单线程与多线程程序的效率可能只对那些将大问题分成小块供每个线程处理的程序有意义。

标签: c++ multithreading compilation g++ clang++


【解决方案1】:

我不知道你用什么做多线程,但是 您可以为此使用OpenMP 共享内存多处理API。

你有两种方式在多线程模式和单线程模式之间切换:

  • 在 GCC 和 Clang 中使用 -fopenmp 标志禁用/启用 OpenMP。
  • 使用OMP_NUM_THREADS=X 环境变量或直接使用例程set_omp_num_threads(X),其中X 是您的线程号。

请注意,这两种方式之间存在差异,它们并不等同。如果需要,我可以详细说明这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-26
    • 1970-01-01
    • 1970-01-01
    • 2017-09-02
    • 1970-01-01
    • 2021-07-05
    相关资源
    最近更新 更多