哪种实现是正确的?
//previous code
leftSum.fork();
...
return (rightSum.compute() + leftSum().join());或
return (leftSum.join() + rightSum().compute());并说它是不正确的,结果是什么呢?
发布于 2016-06-10 03:14:51
第一种方法是正确的,因为你总是需要遵循下一种顺序:
fork()将左边的任务提交到池,以便在asynchronously.compute()中执行,以便使用当前threadjoin()执行右边的任务,使当前线程等待,直到它获得左边(派生的)任务的结果。第二种方法将使线程在执行其任务之前等待,这样您就失去了并行执行递归任务的好处,因为它们将一个接一个地执行。
https://stackoverflow.com/questions/37734205
复制相似问题