Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 有没有办法编译多线程C++;使用单线程版本库的程序?_C++_Multithreading_Compilation_G++_Clang++ - Fatal编程技术网

C++ 有没有办法编译多线程C++;使用单线程版本库的程序?

C++ 有没有办法编译多线程C++;使用单线程版本库的程序?,c++,multithreading,compilation,g++,clang++,C++,Multithreading,Compilation,G++,Clang++,我正在尝试做一个代码自动编译和自动求值程序。我想比较多线程模式和单线程模式下程序的效率差异。因此,我想知道是否有一个编译选项允许我使用psudo多线程库(实际上使用单线程实现)编译一个多线程程序,从而从多线程程序派生出一个单线程程序。我不知道多线程程序使用什么,但是 您可以为此使用共享内存多处理API 在多线程模式和单线程模式之间切换有两种方式: 使用GCC和Clang中的-fopenmp标志禁用/启用OpenMP 使用OMP\u NUM\u THREADS=X环境变量,或直接使用例程set\

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

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

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

  • 使用GCC和Clang中的
    -fopenmp
    标志禁用/启用OpenMP
  • 使用
    OMP\u NUM\u THREADS=X
    环境变量,或直接使用例程
    set\u OMP\u NUM\u THREADS(X)
    其中
    X
    是线程编号

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

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