哪一项实施是正确的?
//previous code
leftSum.fork();
...
return (rightSum.compute() + leftSum().join());
或
return (leftSum.join() + rightSum().compute());
并且说它不正确,结果会产生什么后果?
答案 0 :(得分:1)
第一种方法是正确的方法,因为您总是需要遵循下一个顺序:
fork()
将左任务提交到池中,以便异步执行。compute()
使用当前线程执行正确的任务join()
使当前线程等到它得到左(分叉)任务的结果。第二种方法是让线程在执行任务之前等待,这样你就会失去并行执行递归任务的好处,因为它们会一个接一个地执行。