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;
}
}
出力:
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
このコードをクアッドコアPC(Core2Quad、ハイパースレッディングなしの4コア)で実行しているので、1〜4スレッドでほぼ同じ時間がかかると予想しました。代わりに、1つのコアのみが使用されているように見えます。ここで何が欠けていますか?
ありがとう
アップデート:
-UbuntuLinuxでEclipseCDTを使用しています
-Pthreadで同じことを試しましたが、同じ結果が得られました