static void testlock() { for(int i=0;i<10000000;i++) { float f=2.0/i; } } static void TEST() { cout<<"Start testing" <<endl; unsigned int startClock; for(int i=1;i<=10;i++) { startClock = clock(); vector<boost::thread*> threads; for(int j=0;j<i;j++) threads.push_back(new boost::thread(&testlock)); for(int j=0;j<i;j++) { threads[j]->join(); delete threads[j]; } cout << i << " threads: "<< clock()-startClock << endl; } }
Conclusion:
Start testing 1 threads: 180000 2 threads: 350000 3 threads: 540000 4 threads: 730000 5 threads: 900000 6 threads: 1080000 7 threads: 1260000 8 threads: 1510000 9 threads: 1660000 10 threads: 1810000
I run this code on a quad-core PC (Core2Quad, 4 cores without a hyper-thread), so I expected that 1-4 threads would take about the same time. Instead, it seems that only one core is used. What am I missing here?
thanks
Update:
-I use Eclipse CDT under Ubuntu Linux
- I tried the same with Pthread and get the same result
source share