gpt4 book ai didi

c++ - pthread_join 是一个瓶颈

转载 作者:太空狗 更新时间:2023-10-29 23:37:12 27 4
gpt4 key购买 nike

我有一个应用程序,其中 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;
}

线程函数中打印的时间在 40ms - 60ms 范围内,而 main 函数中打印的时间在 650ms - 670ms 范围内。具有讽刺意味的是,我的串行代码在 650ms - 670ms 时间内运行。我该怎么做才能减少 pthread_join 花费的时间?

提前致谢!

最佳答案

在 Linux 上,clock() 测量组合的 CPU 时间。 它不测量墙上时间。

这就是为什么您得到 ~640 ms = 16 * 40ms 的原因。 (正如评论中指出的那样)

要测量挂钟时间,您应该使用类似的东西:

关于c++ - pthread_join 是一个瓶颈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9087966/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com