Hello users.
I observed the boost threads behave strangely, depending on the way I call the function to be executed in parallel.
In the following example (example #1), the threads launched are executed in parallel:
****************************************************************************************
1)
class Test
{
int insert(){};
} object;
boost::thread* threads = new boost::thread[N];
for(unsigned int i = 0; i < N; i++)
{
threads[i] = boost::thread(&Test::insert, &object);
}
****************************************************************************************
However, in the following example (example #2), the threads are executed sequentially. Only the line in the for-loop body differs from example#1.
****************************************************************************************
2)
class Test
{
int insert(){};
} object;
boost::thread* threads = new boost::thread[N];
int ret;
for(unsigned int i = 0; i < N; i++)
{
threads[i] = boost::thread(boost::lambda::var(ret) = object.insert());
}
****************************************************************************************
Can anybody explain why the threads in example#2 are executed sequentially (i.e., one at a time)?
Best Regards,
Panagiotis Foteinos