函数在后台运行c ++

时间:2013-11-11 11:36:04

标签: c++ function

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

谁能帮助我!

这是我的功能:

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

2 个答案:

答案 0 :(得分:2)

std::async如何在另一个线程中计算它:

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

    int result = r.get();    
}

需要启用C ++ 11。

答案 1 :(得分:0)

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

#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支持进行编译。对于MS Visual C ++编译器,它是/openmp,对于GNU C ++编译器,它是-fopenmp。您可以在其使用手册中找到其他编译器的正确标记。