我有一个C ++多线程程序。我想知道为什么主线程进行了部分计算,所以(在我的测试中)主线程总是比其余线程慢几秒钟。 (为了进行比较,其他线程在9秒内运行,主线程在11秒内运行。)
如果我不将主线程用于部分计算,则所有线程大约在同一时间完成。即:
int numThreads = 4;
std::thread *threads = new std::thread[numThreads];
for (int i = 0; i < numThreads; i++){
threads[i] = std::thread(func)
}
for (int i = 0; i < numThreads; i++){
threads[i].join();
}
vs
int numThreads = 4;
std::thread *threads = new std::thread[numThreads - 1];
for (int i = 0; i < numThreads-1; i++){
threads[i] = std::thread(func);
}
func();
for (int i = 0; i < numThreads-1; i++){
threads[i].join();
}
非常感谢您!