新手求教C++并行代码问题,请大家指点如何实现多个线程的高效计算问题。

如下代码,我分了两个线程计算collision函数,希望两个线程同时进行计算以减少一半的计算时间(双核计算机)。
但是在计算时,由于collision函数运算量过大,后续函数需要用到其计算结果时两个线程都还没计算完成。若将detach()改用join(),则不能提高它的计算速度。请问可以通过什么办法解决上述问题?

 thread CollisionTest[2];//两个线程
    for (int t = 0; t < 2; t++)
    {
        CollisionTest[t] = thread(collision,  t);
        CollisionTest[t].detach();
    }

你需要进一步优化。看collision函数内部能不能再拆分成多个线程来处理提高并发能力

thread 创建时,线程就已经执行。区别在于后续遇到join,则主线程阻塞;遇到detach,则主线程不阻塞。

你的代码要改成join,且两个线程同步执行的话,应该这样:

 thread CollisionTest[2];//两个线程
    for (int t = 0; t < 2; t++)
    {
        CollisionTest[t] = thread(collision,  t);
    }

        for (int t=0; t < 2; t++)
        {
            CollisionTest[t].join();
        }