Articulo de referencia

Extensiones paralelas

.NET Framework stack"}"> API de tiendas .NET Modelo asíncrono LINQ paralelo TPL LINQ EF WPF WCF WF WCS Formularios de Windows ASP.NET ADO.NET Biblioteca de clases del marco Ento...

Parallel Extensions fue el nombre de desarrollo de una biblioteca de concurrencia administrada desarrollada mediante una colaboración entre Microsoft Research y el equipo CLR de Microsoft . La biblioteca se lanzó en la versión 4.0 de .NET Framework . [ 1 ] Está compuesta por dos partes: Parallel LINQ (PLINQ) y Task Parallel Library (TPL). [ 2 ] [ 3 ] También consta de un conjunto de estructuras de datos de coordinación (CDS), conjuntos de estructuras de datos utilizadas para sincronizar y coordinar la ejecución de tareas concurrentes. [ 4 ]

LINQ paralelo

PLINQ , o LINQ paralelo , paraleliza la ejecución de consultas sobre objetos (LINQ to Objects) y datos XML (LINQ to XML). PLINQ está diseñado para exponer el paralelismo de datos mediante el uso de consultas. [ 2 ] Cualquier cálculo sobre objetos que se haya implementado como consulta puede paralelizarse con PLINQ. Sin embargo, los objetos deben implementar la IParallelEnumerableinterfaz, que es definida por el propio PLINQ. Internamente, utiliza TPL para la ejecución. [ 4 ] [ 5 ]

Biblioteca de tareas paralelas

La biblioteca de paralelismo de tareas ( TPL ) es el componente de paralelismo de tareas de las extensiones paralelas para .NET. [ 6 ] Expone construcciones paralelas como bucles Fory operaciones paralelas ForEach, utilizando llamadas a métodos regulares y delegados , por lo que las construcciones pueden usarse desde cualquier lenguaje CLI . La propia biblioteca se encarga de crear y terminar subprocesos , así como de escalar el número de subprocesos según el número de procesadores disponibles, [ 3 ] utilizando un planificador de robo de trabajo . [ 7 ]

TPL también incluye otras construcciones como Task y Future . Una Task es una acción que se puede ejecutar independientemente del resto del programa. En ese sentido, es semánticamente equivalente a un hilo, excepto que es un objeto más ligero y no requiere la sobrecarga de crear un hilo del sistema operativo. Las tareas se ponen en cola mediante un objeto Task Manager y se programan para ejecutarse en varios hilos del sistema operativo en un grupo de hilos cuando les llega el turno.

Future es una tarea que devuelve un resultado. El resultado se calcula en un hilo en segundo plano encapsulado por el objeto Future , y se almacena en búfer hasta que se recupera. [ 3 ] Si se intenta recuperar el resultado antes de que se haya calculado, el hilo solicitante se bloqueará hasta que el resultado esté disponible. [ 6 ]

La otra construcción de TPL es la clase Parallel . TPL proporciona una forma básica de paralelismo estructurado a través de tres métodos estáticos en la clase Parallel:

Paralelo.Invocar
Ejecuta una serie de delegados de acción en paralelo y luego espera a que finalicen.
Paralelo.Para
Equivalente paralelo de un bucle for en C#
Paralelo.Para cada
Equivalente paralelo de un bucle foreach en C#

Arquitectura

El concepto principal en las Extensiones Paralelas para .NET es una Task, que es una pequeña unidad de código, generalmente representada como una función lambda , que puede ejecutarse de forma independiente. Tanto PLINQ como la API TPL proporcionan métodos para crear las Tareas: PLINQ divide una consulta en Tareas más pequeñas, y los Parallel.Formétodos Parallel.ForEachy Parallel.Invokedividen un bucle en Tareas.

PFX incluye un Task Managerobjeto que programa las tareas para su ejecución. Un administrador de tareas contiene una cola global de tareas, que luego se ejecutan. También encapsula múltiples hilos en los que se ejecutan las tareas. Por defecto, se crean tantos hilos como procesadores (o núcleos de procesador) haya en el sistema, aunque este número se puede modificar manualmente. Cada hilo está asociado a una cola de tareas específica. Cuando está inactivo, cada hilo toma un lote de tareas y las coloca en su cola local, donde se ejecutan una por una. Si la cola global está vacía, un hilo buscará tareas en las colas de sus pares y tomará las tareas que lleven más tiempo en la cola ( robo de tareas ). Durante la ejecución, las tareas se ejecutarán de forma independiente, y el cambio de estado de una tarea es independiente de las demás. Por lo tanto, si utilizan un recurso compartido, aún necesitan sincronizarse manualmente mediante bloqueos u otras construcciones.

Véase también

Referencias

  1. "Novedades de .NET Framework 4" . Consultado el 21 de septiembre de 2011 .
  2. 1 2 "Programación en la era de la concurrencia: Programación concurrente con PFX" . Consultado el 16 de octubre de 2007 .
  3. 1 2 3 "MSDN Magazine: Task Parallel Library" . Archivado del original el 14 de octubre de 2007. Recuperado el 16 de octubre de 2007 .
  4. 1 2 "Junio ​​de 2008 CTP – Extensiones paralelas para .NET FX" . Consultado el 6 de agosto de 2008 .
  5. "Agregaciones más potentes en PLINQ" . Consultado el 6 de agosto de 2008 .
  6. 1 2 Duffy, Joe (2009). Programación concurrente en Windows . págs. 887–929 . ISBN  978-0321434821.
  7. ^ Leijen, Daan; Schulte, Wolfram; Burckhardt, Sebastián (2009). "El diseño de una biblioteca paralela de tareas". Avisos ACM SIGPLAN . 44 (10): 227. CiteSeerX 10.1.1.146.4197 . doi : 10.1145/1639949.1640106 . 
  • Parallel FX CTP junio de 2008
  • Centro de desarrollo de computación paralela
Obtenido de " https://en.wikipedia.org/w/index.php?title=Parallel_Extensions&oldid=1321299614 "