boost::mutex M;
void
functionA(int j){
for(int i=0; i<j; ++i){
boost::mutex::scoped_lock lock(M);
sqrt(
static_cast<double>(i));}
}
void
functionB(int j){
for(int i=0; i<j; ++i){
boost::mutex::scoped_lock lock(M);
sqrt(
static_cast<double>(i));}
}
int
main(){
thread A(bind(&functionA, 1000000000)), AA(bind(&functionA, 1000000000)),
B(bind(&functionB, 100000000)), BB(bind(&functionA, 100000000));
A.join();
B.join();
AA.join();
BB.join();
}
boost::mutex::scoped_lock lock(M);
is comennted or not.
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. Can anyone explain me why?
Thanks in advance
Pshemek