有没有办法在C / C ++中并行完成不相关的任务

时间:2018-02-05 09:06:34

标签: c++ c parallel-processing

换句话说,因为我主要习惯于C# - 你可以使用Parallel.Invoke进行结构化并行操作,并且几乎同时运行2个或更多完全不相关的类,例如:

public void hello_world()
{
    //hello world code
}

public void mysql_connect()
{
    //connect to mysql here
}

/// Now run them both at the same time

Parallel.Invoke(hello_world, mysal_connect); 

它非常简单且完全平行。我在C / C ++中读到你可以使用OMP,但这似乎是关于运行在具有相同逻辑但不同变量的并行子节点的父节点,不是吗?

1 个答案:

答案 0 :(得分:1)

您可以尝试使用OpenMP任务。打开并行块并在其中创建两个任务块。像这样:

#pragma omp parallel
{

   #pragma omp task {
      // hello world code 
   }
   #pragma omp task {
      // connect mysql
   }
}

-fopenmp选项添加到编译行。可能有更好的方法,因为它要求您将所有代码放在同一个代码块中。无论如何,这是一个非常简单的解决方案,只需添加最少的代码。