The creeks Rattlesnake, Butler, Lolo, Rock and Deep shimmer and surge; the Blackfoot and the Bitterroot rivers join the Clark Fork just outside of town.
响尾蛇、管家、罗罗、岩石和深水这几条溪闪亮而汹涌;黑足和比特鲁特和刚好在城外汇入克拉克•福克河。
The steps branch out using a fork, and come back together using a join.
步骤使用分叉分出,并使用联合返回。
We'll fork left when the others fork right. We won't join the group tonight for the second five-course meal of the day.
晚上团体要吃今天第二顿的五道菜大餐,我们就不参加了。
Similarly, every fork should eventually be followed by a matching join, which combines all the paths starting from the fork.
同理,每个fork最终也都应跟随一个匹配的join,并由后者组合从 fork开始的所有路径。
Decision and merge are always mapped to several input and output criteria-one for each branch, while fork and join correspond to a single output and input criterion, respectively.
Decision和merge始终映射到多个输入和输出条件,每个分支对应一个条件,而fork和join则分别对应于一个输出和输入条件。
To use fork/join directly, you must either use the runForkJoin() method with a task closure or a task class that subclasses AbstractForkJoinWorker.
要直接使用fork/join,您必须使用带有一个任务闭包的runForkJoin()方法或一个将AbstractForkJoinWorker分为子类的任务类。
Revisiting the example from Listing 6, notice that max() is a method already provided on parallel collections, so there is no need to define and invoke a fork/join task directly, as in Listing 7
再看一下清单6中的示例,注意到,max()是一个已经在并行集合中提供的方法,因此没有必要直接定义和调用fork/join任务,如清单 7 所示
The TaskBarrier class mentioned above was used by the fork/join framework to manage the boundaries between the various tasks, and merge their results; in other words: to join the tasks.
前面提到的TaskBarrier类被fork/join框架用来管理不同任务的边界,并合并运行结果,换句话说就是连接任务。
We used a fork and join and placed additional copies of the tasks between them.
我们使用了一个fork和一个join,并将任务的其他副本置于两者之间。
A could bypass the fork and join, but it still needs to enter and leave the process fragment in the upper branch of the fork.
A可以绕过fork和join,但它仍然需要进入和离开 fork 的靠上那条分支中的流程片断。
Waiting tasks in fork/join do not actually block threads.
fork/join 中处于等待中的任务实际上不阻止线程。
The fork and join in Figure 1 cannot execute due to their dangling inputs.
图1中的fork和join由于有悬空输入,它们将无法执行。
If all execution threads started by fork complete successfully, join action is waiting for all of them to complete.
如果fork启动的所有执行的线程都能够成功完成,那么join动作就会等待它们全部完成。
It's easy to express such problems using fork-join, as you saw in the previous installment.
用fork - join可以很容易地表示这类问题,正如您在上一期中看到的那样。
Figure 1 shows an example process with dangling control flow (small white arrows) and data flow (small gray arrows) inputs and outputs in a fork and a join.
在图1显示的示例流程中,有一个fork和一个join,其中有悬空控制流(白色小箭头)和数据流(灰色小箭头)输入和输出。
The fork-join approach offers a portable means of expressing a parallelizable algorithm without knowing in advance how much parallelism the target system will offer.
fork-join方法提供了一种表示可并行化算法的简单方式,而不用提前了解目标系统将提供多大程度的并行性。
We already showed the decision/merge mapping in the MultiMethod project, so this part will concentrate on the fork/join mapping.
我们在 MultiMethod项目中已经介绍了decision/merge映射,因此该部分将集中讨论一下fork/join 映射。
The fork-join framework reduces contention for the work queue by using a technique known as work stealing.
fork - join框架通过一种称作工作窃取(work stealing)的技术减少了工作队列的争用情况。
To assess the effectiveness of ParallelArray, I wrote a simple, unscientific program that runs the query for various sizes of array and fork-join pools.
为了评估ParallelArray的效率,我编写了一个简单的程序,针对各种大小的数组和fork-join池运行查询。
The principal benefit of using the fork-join technique is that it affords a portable means of coding algorithms for parallel execution.
使用fork-join技术的主要好处是,它提供了一种编写并行执行的算法的简便方法。
So the simulation implements a semantics where items get multiplied by a fork and the join does not behave symmetrically, i.e., it does not undo the multiplication.
因此,模拟实现了一个语义,在其中,项目被某个fork增殖成几份,而join不会做出与之对称的行为,也就是说,它不会撤消增殖操作。
This kind of parallel decomposition is often called fork-join because executing a task forks (starts) multiple subtasks and then joins (waits for completion) with them.
这种并行分解方法常常称作fork-join,因为执行一个任务将首先分解(fork)为多个子任务,然后再合并(join)(完成后)。
For most runs, the number of threads in the fork-join pool was equal to the number of hardware threads (cores times threads-per-core) available.
对于大多数运行,fork - join池中的线程数量与可用的硬件线程(内核数乘以每个内核中的线程数)相等。
The pattern in Figure 14 presents the correct way to model parallel branching by using a matching fork-join pair.
图14中的模式展示了使用匹配的 fork-join 对建立并行分支模型的正确方法。
The same holds for the fork and join.
fork和join的情况也是如此。
This cyclic dependency between the join and the decision, and the join and the fork (where the join must be executed before the decision or fork and vice versa) is the reason why a deadlock occurs.
join和decision以及join和fork之间的这种循环依赖关系(其中join必须在decision或fork之前执行,反之亦然)便是发生死锁的原因。
Listing 2 shows an example of a problem that is suitable to a fork-join solution: searching a large array for its maximal element.
清单2显示了一个适合使用fork - join解决方案的问题示例:在大型数组中搜索其中的最大元素。
You then use the description to actually execute the array operations (which USES the fork-join framework under the hood) in parallel.
然后用该描述并行地执行数组操作(幕后使用的是fork - join框架)。
This is typical of fork-join problem implementations because the process of recursively dividing the problem will create a potentially large number of new Problem objects.
这在fork-join问题实现中很常见,因为递归分解问题的过程将会创建大量的新Problem对象。
For sorting and searching problems, the fork-join library gives you an even easier means of expressing parallelizable operations on data sets: the ParallelArray classes.
对于排序和搜索问题,fork - join库提供了一种表示可以并行化的数据集操作的非常简单的途径:parallelarray类。
应用推荐