C
Chris Roth
I'm using VS.net 7.1 on Windows XP.
I have a class that hold a container of doubles. One function (foo) for
the class calls a sub-function (bar) for each of the doubles. I'd like
to multithread foo so that the bar sub-functions can run on multiple
threads. I'd like to imlpement this with _beginthreadex as I'm using
std::vector. Please provide some working code around the following details:
#include <windows.h> // for HANDLE
#include <process.h> // for _beginthreadex()
#include <vector>
using namespace std;
class A
{
private:
vector<double> v;
double d; // some other variable common to each thread;
double bar( double x );
public:
vector<double> foo();
};
vector<double> A::foo()
{
vector r( v.size() );
for( int i=0; i<int(v.size()); ++i )
r = bar( v );
return r;
}
double A::bar( double x )
{
double r = x*d; // some function using x and d
// obviosly more complicated in the real code...
return r;
}
Now what I'd like is for multiple instances of bar to run on my two
cores. Can you help me please?
I have a class that hold a container of doubles. One function (foo) for
the class calls a sub-function (bar) for each of the doubles. I'd like
to multithread foo so that the bar sub-functions can run on multiple
threads. I'd like to imlpement this with _beginthreadex as I'm using
std::vector. Please provide some working code around the following details:
#include <windows.h> // for HANDLE
#include <process.h> // for _beginthreadex()
#include <vector>
using namespace std;
class A
{
private:
vector<double> v;
double d; // some other variable common to each thread;
double bar( double x );
public:
vector<double> foo();
};
vector<double> A::foo()
{
vector r( v.size() );
for( int i=0; i<int(v.size()); ++i )
r = bar( v );
return r;
}
double A::bar( double x )
{
double r = x*d; // some function using x and d
// obviosly more complicated in the real code...
return r;
}
Now what I'd like is for multiple instances of bar to run on my two
cores. Can you help me please?