Uso de tareas en paralelo Biblioteca -TPL (tarea paralela Libiry)

  Aprendemos lo que es el hilo en la sección anterior, cómo utilizar hilos, y por qué necesita el grupo de subprocesos. El uso conjunto de subprocesos puede permitirnos ahorrar recursos del sistema operativo para reducir el grado de paralelismo gasto . Podemos pensar en el grupo de subprocesos es una capa de abstracción que oculta los detalles de la utilización de hilos para el programador , para que puedan concentrarse en la lógica de aplicación en lugar de una variedad de hilos, problemas.
  Sin embargo, el uso de un grupo de subprocesos también es bastante complejo . A partir de subprocesos de trabajo en el grupo de subprocesos resultados conseguirlo no es fácil . Necesitamos implementar, personalizar la forma de obtener resultados, y si no se produce una excepción, una excepción tiene que ser propagado correctamente al hilo inicial. Además de esto, aparte de crear un grupo de operación asíncrona relacionado, y para lograr se realizará una próxima operación lógica después de la finalización de la ejecución de la operación actual no es fácil. En el proceso de tratar de resolver estos problemas, creamos modelo de programación asíncrona y modo asincrónico basado en eventos. modo asincrónico basado en eventos mencionó en el capítulo 3. Estos patrones hacen que sea más fácil conseguir resultados, difusión anormal con mayor facilidad, pero el grupo en conjunto múltiples operaciones asincrónicas todavía tienen mucho trabajo, necesidad de escribir mucho código.
  Con el fin de resolver todos los problemas, .Net Framework4.0 introduce una nueva API en funcionamiento asíncrono, se llama. Tarea paralela Library (Biblioteca tarea paralela, se refiere como TPL) , .Net Framework versión 4.5 de la API ha sido ligeras mejoras , más fácil de usar. El proyecto utilizará la última versión de la TPL libro, es decir, la versión .Net Framework 4.5 API, TPL se puede ver como otra capa de abstracción sobre el grupo de subprocesos, que oculta los programadores de código subyacente para interactuar con el grupo de subprocesosY proporciona un APL grano más conveniente, el concepto básico de la TPL es la tarea. Una tarea representa una operación asincrónica que se pueden ejecutar una variedad de formas, puede funcionar con o sin el uso de un hilo separado. En este capítulo, la tarea de explorar el uso de todos los detalles.
  Por defecto, el programador no necesita saber cómo llevar a cabo la tarea en realidad. TPL creando una capa de abstracción al ocultar los detalles de implementación de las tareas del usuario. Por desgracia, en algunos casos, esto puede dar lugar a errores sutiles, como cuando se trata de obtener los resultados de la tarea del programa se suspende. Este capítulo le ayuda a comprender los principios subyacentes de TPL, y cómo evitar el uso inapropiado.
  Una tarea se puede combinar de varias maneras y otras tareas. Por ejemplo, puede iniciar varias tareas al mismo tiempo, esperar a que todas las tareas para completar, a continuación, ejecutar una tarea en los resultados de todas las tareas que se llevan a cabo con anterioridad algunos cálculos. TPL en comparación con el modelo anterior, que tiene una ventaja clave es su conveniencia para combinar tareas de API ,
el procesamiento de tareas en una variedad de maneras resultados anormales. Dado que una tarea puede ser un número de otras tareas, cualquiera de estos, las obras a su vez puede tener su propio sub-tareas, por lo que el concepto de un AggregateException. Esta anomalía puede ser capturada dentro de todas las tareas de nivel anormales, y permite que la manija separada estas excepciones.
Y, por último pero no menos importante, C # 5.0 tiene soporte incorporado para el TPL, que nos permite utilizar el nuevo asíncrono y palabras clave esperan en una superficie lisa , tareas operativas manera cómoda.
  En este capítulo vamos a aprender a realizar operaciones asíncronas utilizando TPL. Vamos a aprender qué tareas, cómo crear una tarea de una manera diferente, y cómo combinar las tareas. Vamos a discutir cómo el legado de APM y el modo de trabajo EAP para utilizar, y cómo manejar adecuadamente excepciones, la forma de cancelar la tarea, y cómo realizar múltiples tareas al mismo tiempo. Además, la tarea será cómo utilizar correctamente en aplicaciones de Windows GUI.

clase Programa 
{ 
    static  void principal ( Cadena [] args) 
    { 
     // crear dos tareas utilizando tareas constructor [sólo llama al método Start estas tareas, tarea será realizar tareas]
var T1 = nueva nueva tarea (() => TaskMethod ( " Grupo 1. " )); var T2 = nueva nueva tarea (() => TaskMethod ( " Grupo 2 " )); t2.Start (); t1.Start (); // utilizando diferentes constructor de tareas = ====== tarea Task.Run y Task.StartNew método creado comenzará inmediatamente, sin que se muestre la llamada al método start; Task.Run (()

     
=> TaskMethod ( " tarea 3 " )); Task.Factory.StartNew (() => TaskMethod ( " el Grupo 4. " ));

Un método de acceso directo simplemente Task.Factory.StartNew //Task.Run, pero el último tiene opciones adicionales.
// marcamos la tarea a ejecutar durante mucho tiempo, los resultados de la tarea no va a usar la agrupación de hebras, y se ejecutan en un hilo separado Task.Factory.StartNew (()
=> TaskMethod ( " Tarea 5 " ), TaskCreationOptions.LongRunning) ; el Thread.Sleep (TimeSpan.FromSeconds ( 1. )); el Console.ReadKey (); } static void (TaskMethod cadena nombre) { Console.WriteLine ( " . está ejecutando la tarea {0} {ON ID Tema Un hilo es la piscina 1.} Tema: {2} " , nombre, Thread.CurrentThread.ManagedThreadId, Thread.CurrentThread.IsThreadPoolThread); } }

  Cuando se ejecuta el programa, se utiliza el constructor de tareas crea dos tareas. Pasamos una expresión lambda como el delegado de Acción. Esto nos permite proporcionar TaskMethod un parámetro de cadena. A continuación, ejecute estas tareas utilizando el método Start.
Tenga en cuenta que sólo se llama al método Start estas tareas, llevará a cabo la tarea. Es fácil olvidar que la tarea real comienza.
  A continuación, utilice Task.Run y Task.Factory.StartNew forma de ejecutar las otras dos tareas. constructor de uso de tareas con la diferencia de que estas dos tareas se crean comenzará a trabajar de inmediato, por lo que no hay necesidad de llamar explícitamente al método Start para estas tareas. Todas las tareas de la tarea 1 a la tarea 4 se han colocado en un hilo de rosca de la piscina y se ejecutan en un orden especificado. Si se ejecuta el programa varias veces, se dará cuenta de la orden de ejecución de tareas es incierto.
  Task.Run método sólo es Task.Factory.StartNew de un acceso directo, pero este último tiene opciones adicionales. Pase! Normalmente, si ningún requisito especial, un método puede ser utilizado antes, Tarea 5 como se muestra en la figura. Marcamos la tarea de larga duración, los resultados de la tarea no va a utilizar el grupo de subprocesos, y se ejecutan en un hilo separado. Sin embargo, de acuerdo con el programador de tareas actual para ejecutar la tarea (programador de tareas) modo de operación puede variar.

Supongo que te gusta

Origin www.cnblogs.com/gougou1981/p/12602841.html
Recomendado
Clasificación