【发布时间】:2025-12-03 09:55:02
【问题描述】:
我在一台 8 核的 Windows PC 上运行了以下程序。函数(“FUNCTION”)的运行时间非常短(几百微秒)。但是,线程 3 所需的运行时间通常比线程 1 长 1.5 倍左右。对此有何解释?
using namespace std::chrono;
double FUNCTION(){
double result=0.0;
for(int i=0; i<20'000; i++){
result=result+sqrt(i);
}
return result;
}
int main()
{
auto start1 = steady_clock::now();
auto start2 = steady_clock::now();
auto start3 = steady_clock::now();
auto thread1= std::async( std::launch::async, FUNCTION);
auto thread2= std::async( std::launch::async, FUNCTION);
auto thread3= std::async( std::launch::async, FUNCTION);
double res1 = thread1.get();
auto stop1 = steady_clock::now();
double res2 = thread2.get();
auto stop2 = steady_clock::now();
double res3 = thread3.get();
auto stop3 = steady_clock::now();
auto duration1 = std::chrono::duration_cast<std::chrono::microseconds>(stop1 - start1);
std::cout << "Duration Thread 1: "<<duration1.count() << std::endl;
auto duration2 = duration_cast<microseconds>(stop2 - start2);
std::cout << "Duration Thread 2: "<<duration2.count()<<std::endl;
auto duration3 = duration_cast<microseconds>(stop3 - start3);
std::cout << "Duration Thread 3: "<<duration3.count()<<std::endl;
return 0;
}
是因为处理线程需要时间吗?
如果是这样,是否有一个近似估计在函数的哪个运行时并行化调用是有意义的?
【问题讨论】:
标签: c++ multithreading parallel-processing