hdolder.com srl  

       Software R&D
     hdc Home    |    Contenido    |    KO1    |    Director    |    Direcciones    |    email    |   Twitter   
  Silverlight Multi-threading

 

 

 

 *** Documento en elaboración *** v191 v*

Multi-threading

Silverlight (SL) tiene facilidades de multi-threading.

En general, en las aplicaciones SL, múltiples Threads coexisten e interoperan colaborando entre si.

En las facilidades de multi-threading radica la gran potencia de SL para procesar eficientemente aplicaciones sofisticadas.
 

El Thread Principal de SL

Sin embargo al igual que en los Windows Forms y WPF, el UI Thread (el Thread que maneja la GUI) es el Thread Principal y todas las operaciones que se realicen sobre la UI, directa, o indirectamente vía Databinding, deben hacerse en el UI Thread. En la sección "Silverlight UI Message Queueing" se describimos el modo de funciónamiento básico de SL.


Deadlocks

En este contexto de múltiples Threads pueden producirse deadlocks.  

Un deadlock es una situación en que dos threads esperan recíprocamente que la otra termine para poder continuar y por consiguiente ninguna puede hacerlo jamás. Un deadlock puede involucrar a múltiples threads.

La necesidad de que todas las operaciones que se realicen sobre la UI deban hacerse en el UI Thread convierte al UI Thread l en un cuello de botella importante y aumenta la probabilidad de que se produzcan deadlocks.

Prevención de deadlocks

La prevención de deadlocks requiere un diseño cuidadoso cumpliendo algunas reglas y recomendaciones. Ver  Silverlight y el Procesamiento Paralelo en M&P.

Por ejemplo la primer regla es utilizar el UI Thread lo menos posible, implementando la mayor cantidad de funciones posible en Threads auxiliares.

Facilidades de multi-threading en SL

SL implementa la mayoría de las funciones de programación asincrónica (multi-threading) de .NET [R3] .

SL implementa las funciones de sincronización de threads (rendezvous) de .NET así como las funciones de interacción cross-thread.

La Clase BackgroundWorker de .NET [R1] [R2] resulta particularmente útil en este contexto.

Asynchronous Programming Model (APM)

La modalidad de programación basada en la utilización de múltiples threads se denomina "Asynchronous Programming Model" o APM.

La programación asincrónica, que es algo mas compleja que la programación secuencial, permite hacer cosas que no se pueden hacer usando solo programación secuencial (invocaciones remotas recursivas, por ejemplo) así como aprovechar la capacidad de procesamiento paralelo de los procesadores multi-core.

MPe minimiza la complejidad de la programación asincrónica mediante los BLOCKS del M&P Parallel Processing Framework.

Referencias

Links

 Ver también

 


 

  TBW The BLOCKS World

©2012 hdolder.com srl  

Czx90ionD
2012-01-07