日期:2014-05-16  浏览次数:20673 次

跪求:linux下pthread 双线程计算和单线程的运行时间完全相同是为什么?
计算一组(1024对)向量点积,用两个线程(各计算512对),运行时间和用一个线程(1024对)完全相同,访问的数据无冲突,代码简要如下:

跪求大神帮忙!!!


167 //int pthread
168 pthread_t pid; 
169 pthread_attr_t attr;
170 
   
175 pthread_attr_init(&attr);
176 pthread_attr_setscope(&attr, PTHREAD_SCOPE_PROCESS);
177 pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
178  
179 for(int i=0; i<nT; ++i)
180 {  
181 //CPara _CPara;
182 _CPara[i]._CData = &(_CData[i]);
183 _CPara[i].nT = nT;
184 cout << "In main, create " << i << " thread" << endl;
185 _CPara[i].nPid = i;

186 pthread_create(&pid, &attr, SDP, &(_CPara[i]));//计算点积
  186, }


------解决方案--------------------
打印语句去掉,任务量增大。