У меня есть приложение, где pthread_join
является узким местом.Мне нужна помощь для решения этой проблемы.
void *calc_corr(void *t) {
begin = clock();
// do work
end = clock();
duration = (double) (1000*((double)end - (double)begin)/CLOCKS_PER_SEC);
cout << "Time is "<<duration<<"\t"<<h<<endl;
pthread_exit(NULL);
}
int main() {
start_t = clock();
for (ii=0; ii<16; ii++)
pthread_create(&threads.p[ii], NULL, &calc_corr, (void *)ii);
for (i=0; i<16; i++)
pthread_join(threads.p[15-i], NULL);
stop_t = clock();
duration2 = (double) (1000*((double)stop_t - (double)start_t)/CLOCKS_PER_SEC);
cout << "\n Time is "<<duration2<<"\t"<<endl;
return 0;
}
Время, напечатанное в функции нити, находится в диапазоне 40 мс - 60 мс , где время, указанное в основной функции, находится в 650мс - 670мс .Ирония в том, что мой серийный код работает в 650 мс - 670 мс времени.Что я могу сделать, чтобы сократить время, затрачиваемое на pthread_join
?
Заранее спасибо!