Concurrency 具有并行调用的并行编程

Concurrency 具有并行调用的并行编程,concurrency,Concurrency,我想用并行编程来加速这个过程 在类中,成员函数mainFun中有一个for循环。在每次迭代中,都会调用subFun。如何使用并行调用来并发调用子函数以充分利用CPU能力 非常感谢 代码如下: #include <vector> #include <ppl.h> using namespace std; using namespace concurrency; typedef vector<double> Vector; typedef vector<V

我想用并行编程来加速这个过程

在类中,成员函数mainFun中有一个for循环。在每次迭代中,都会调用subFun。如何使用并行调用来并发调用子函数以充分利用CPU能力

非常感谢

代码如下:

#include <vector>
#include <ppl.h>

using namespace std;
using namespace concurrency;
typedef vector<double> Vector;
typedef vector<Vector> Matrix;

class myClass {
private:
    int num;
    Matrix a;

public:
    myClass(int n) :
        num(n), a(num, Vector(2)) {}

    Vector subFun(int n) {
        Vector b(2, 0);

        //body: to be implemented

        return b;
    }

    void mainFun() {
        for (int i = 0; i < num; i++) {

            //parallel_invoke([&a[i]] { a[i] = subFun(i); });//<-- how to implement parallel_invoke?
        }
    }


};

int main() {

    myClass A(1000);

    return 0;
}
#包括
#包括
使用名称空间std;
使用名称空间并发;
typedef向量;
向量矩阵;
类myClass{
私人:
int-num;
基质a;
公众:
myClass(int n):
num(n),a(num,向量(2)){
向量子单元(int n){
向量b(2,0);
//主体:待实施
返回b;
}
void main fun(){
for(int i=0;i//并行调用([&a[i]]{a[i]=子函数(i);})//您考虑过多线程吗?您可以在单独的线程中调用每个函数调用。

使用的CPU不到50%。因此,我想使用parallel_invoke使其更快。如果您有一个线程池,线程数等于内核数?我将代码更改为:parallel_invoke([&]{a[I]=subFun(I);},[&]{a[i+num/4]=subFun(num/4+i);},[&]{a[i+2*num/4]=subFun(num/4+i);},[&]{a[i+3*num/4]=subFun(num/4+i);};如何使用for循环使代码更加紧凑?