0

我创建了一个在 while(1) 中运行并返回一个整数的函数,我想在后台打开这个函数并恢复它们的返回。

谁能帮帮我!

这是我的功能:

int my_fct() {
    while(1) {
        int result = 1;
        return result;
    }
}
4

2 回答 2

2

如何std::async在不同的线程中计算它:

int main()
{
    auto r = std::async(std::launch::async, my_fct);

    int result = r.get();    
}

需要启用 C++11。

于 2013-11-11T11:44:15.857 回答
0

如果您无法访问 C++11 并且您无法像在 Windows 上那样访问 pthreads,那么您可以使用 OpenMP。类 Unix 系统和 Windows 上的大多数 C++ 编译器都支持 OpenMP。它比 pthread 更容易使用。例如,您的问题可以编码为:

#include <omp.h>
int my_fct() {
    while(1) {
        int result = 1;
        return result;
    }
}
int main()
{
  #pragma omp sections
  {
    #pragma omp section
    {
      my_fct();
    }
    #pragma omp section
    {
      //some other code in parallel to my_fct
    }
  }
}

这是一种选择,请查看 OpenMP 教程,您也可能会找到其他一些解决方案。

正如评论中所建议的,您需要包含适当的编译器标志才能使用 OpenMP 支持进行编译。它适用/openmp于 MS Visual C++ 编译器和-fopenmpGNU C++ 编译器。您可以在其他编译器的使用手册中找到正确的标志。

于 2013-11-11T12:01:03.963 回答