11---
22layout : overview-large
3- title : Configuring Parallel Collections
3+ title : Configurando las colecciones paralelas
44
55disqus : true
66
99language : es
1010---
1111
12- ## Task support
12+ ## " Task support"
1313
14- Parallel collections are modular in the way operations are scheduled. Each
15- parallel collection is parametrized with a task support object which is
16- responsible for scheduling and load-balancing tasks to processors.
14+ Las colecciones paralelas son modulares respecto al modo en que las operaciones
15+ son planificadas. Cada colección paralela es planificada con un objeto "task support"
16+ el cual es responsable de la planificación y el balanceo de las tareas a los
17+ distintos procesadores.
1718
18- The task support object internally keeps a reference to a thread pool
19- implementation and decides how and when tasks are split into smaller tasks. To
20- learn more about the internals of how exactly this is done, see the tech
21- report \[ [ 1] [ 1 ] \] .
19+ El objeto "task support" mantiene internamente un referencia a un pool de hilos y decide
20+ cómo y cuando las tareas son divididas en tareas más pequeñas. Para conocer más en detalle
21+ cómo funciona internamente diríjase al informe técnico \[ [ 1] [ 1 ] \] .
2222
23- There are currently a few task support implementations available for parallel
24- collections. The ` ForkJoinTaskSupport ` uses a fork-join pool internally and is
25- used by default on JVM 1.6 or greater. The less efficient
26- ` ThreadPoolTaskSupport ` is a fallback for JVM 1.5 and JVMs that do not support
27- the fork join pools. The ` ExecutionContextTaskSupport ` uses the default
28- execution context implementation found in ` scala.concurrent ` , and it reuses
29- the thread pool used in ` scala.concurrent ` (this is either a fork join pool or
30- a thread pool executor, depending on the JVM version). The execution context
31- task support is set to each parallel collection by default, so parallel
32- collections reuse the same fork-join pool as the future API.
23+ En la actualidad las colecciones paralelas disponen de unas cuantas implementaciones de
24+ "task support". El ` ForkJoinTaskSupport ` utiliza internamente un fork-join pool y es utilizado
25+ por defecto en JVM 1.6 o superiores. ` ThreadPoolTaskSupport ` , menos eficiente, es utilizado como
26+ mecanismo de reserva para JVM 1.5 y máquinas virtuales que no soporten los fork join pools. El
27+ ` ExecutionContextTaskSupport ` utiliza el contexto de ejecución por defecto que viene definido
28+ en ` scala.concurrent ` , y reutiliza el thread pool utilizado en dicho paquete (podrá ser un fork
29+ join pool o un thread pool executor dependiendo de la versión de la JVM). El "task support" basado
30+ en el contexto de ejecución es establecido en cada una de las colecciones paralelas por defecto, de modo
31+ que dichas colecciones reutilizan el mismo fork-join pool del mismo modo que el API de las "futures".
3332
34- Here is a way to change the task support of a parallel collection :
33+ A continuación se muestra cómo se puede modificar el objeto " task support" de una colección paralela :
3534
3635 scala> import scala.collection.parallel._
3736 import scala.collection.parallel._
@@ -45,37 +44,37 @@ Here is a way to change the task support of a parallel collection:
4544 scala> pc map { _ + 1 }
4645 res0: scala.collection.parallel.mutable.ParArray[Int] = ParArray(2, 3, 4)
4746
48- The above sets the parallel collection to use a fork-join pool with
49- parallelism level 2. To set the parallel collection to use a thread pool
50- executor:
47+ El fragmento de código anterior determina que la colección paralela utilice un fork-join pool con un nivel 2 de
48+ paralelismo. Para indicar que la colección utilice un thread pool executor tendremos que hacerlo del siguiente modo:
5149
5250 scala> pc.tasksupport = new ThreadPoolTaskSupport()
5351 pc.tasksupport: scala.collection.parallel.TaskSupport = scala.collection.parallel.ThreadPoolTaskSupport@1d914a39
5452
5553 scala> pc map { _ + 1 }
5654 res1: scala.collection.parallel.mutable.ParArray[Int] = ParArray(2, 3, 4)
5755
58- When a parallel collection is serialized, the task support field is omitted
59- from serialization. When deserializing a parallel collection, the task support
60- field is set to the default value-- the execution context task support.
56+ Cuando una colección paralela es serializada, el atributo que almacena la referencia
57+ al objeto "task support" es omitido en el proceso de serialización. Cuando una colección
58+ paralela es deserializada, dicho atributo toma el valor por defecto -- el objeto "task support"
59+ basado en el contexto de ejecución.
6160
62- To implement a custom task support, extend the ` TaskSupport ` trait and
63- implement the following methods :
61+ Para llevar a cabo una implementación personalizada de un nuevo objeto "task support" necesitamos
62+ extender del trait ` TaskSupport ` e implementar los siguientes métodos :
6463
6564 def execute[R, Tp](task: Task[R, Tp]): () => R
6665
6766 def executeAndWaitResult[R, Tp](task: Task[R, Tp]): R
6867
6968 def parallelismLevel: Int
7069
71- The ` execute ` method schedules a task asynchronously and returns a future to
72- wait on the result of the computation. The ` executeAndWait ` method does the
73- same, but only returns when the task is completed. The ` parallelismLevel `
74- simply returns the targeted number of cores that the task support uses to
75- schedule tasks .
70+ El método ` execute ` planifica una tarea asíncrona y retorna una " future" sobre la que
71+ esperar el resultado de la computación. El método ` executeAndWait ` lleva a cabo el mismo
72+ trabajo, pero retorna única y exclusivamente una vez la tarea haya finalizado. ` parallelismLevel `
73+ simplemente retorna el número de núcleos que el objeto " task support" utiliza para planificar
74+ las diferentes tareas .
7675
7776
78- ## References
77+ ## Referencias
7978
80791 . [ On a Generic Parallel Collection Framework, June 2011] [ 1 ]
8180
0 commit comments