Hi Przemyslaw, (btw, it's better to give some subject to postings).
I have found a very strange behaviour (for me at least!) in boost.Thread. The same dummy code: boost::mutex M;
void functionA(int j)
{
for(int i=0; i
{
boost::mutex::scoped_lock lock(M);
And it would be good if the code was properly indented.
sqrt(static_cast<double>(i));
void functionB(int j)
{
for(int i=0; i
{
boost::mutex::scoped_lock lock(M); ..... If we do not lock the mutex then both processors are used on 100%. However, in case the line is uncommented (we lock the mutex) only one processor is used.
If you lock the mutex, then only one thread can be inside loop body at the moment. Since the code outside of mutex is very small, most of the time only one thread will be running. So, it's reasonable that OS uses just one processor. - Volodya