A participar se dijo..

22 02 2009




Multihilos y Programación Asíncrona

18 02 2009

Las aplicaciones que trabajan con multihilos son aquellas que dividen su carga de trabajo en diversos Hilos o unidades de ejecución. Una razón para esto es la simplificación del diseño. Multi-hilos permite para permitir una fuerte cohesión entre tareas, significando que cada clase de hilo capturará un simple abstracción o idea. Este diseño produce una estrategia llamada divide-and-conquer (dividir y reducir) en lo cual sistemas grandes y complejos son divididos entre más unidades manejables, resultando un sistema con menos costo en la construcción y mantenimiento. La introducción de múltiples hilos también produce beneficios tanto como incrementar concurrencia, mejorar la interacción con el usuario y más eficiencia en el uso de la CPU.

Un poco más de Conceptos..

¿Cómo trabaja mi PC?

Los sistemas operativos utilizan procesos para independizar las diferentes aplicaciones que ejecutan. Los subprocesos son la unidad básica a la que el sistema operativo asigna tiempo de procesador. Puede que haya más de un subproceso ejecutando código dentro del proceso. Cada subproceso mantiene controladores de excepciones, una prioridad de programación y un conjunto de estructuras que el sistema utiliza para guardar el contexto del subproceso hasta que se programe. El contexto del subproceso incluye, el espacio de direcciones del proceso host del subproceso, toda la información que necesita éste para reanudar sin problemas la ejecución, como el conjunto de registros de la CPU y la pila.

¿Qué papel juega .NET Framework?

.NET Framework subdivide un proceso de sistema operativo en pequeños subprocesos administrados, denominados dominios de aplicación y representados por AppDomain. Dentro del mismo proceso administrado se pueden ejecutar uno o varios subprocesos administrados (representados por System.Threading.Thread) en uno o varios dominios de aplicación. Aunque cada dominio de aplicación se inicia con un único subproceso, su código puede crear otros dominios de aplicación y subprocesos adicionales. El resultado es que un subproceso administrado puede moverse libremente entre dominios de aplicación dentro del mismo proceso administrado; podría tener sólo un subproceso que se moviera entre varios dominios de aplicación.

Un sistema operativo que admita multitareas prioritarias crea el efecto de ejecución simultánea de varios subprocesos desde varios procesos. Para ello, se divide el tiempo de procesador disponible entre los subprocesos que lo necesitan y se asigna un espacio de tiempo de procesador a cada subproceso, uno tras otro. Cuando trascurre su espacio de tiempo, el subproceso que se esté ejecutando actualmente se suspende y otro subproceso reanuda su ejecución. Cuando el sistema cambia de un subproceso a otro, guarda el contexto del subproceso prioritario y vuelve a cargar el contexto de subproceso guardado del siguiente subproceso de la cola.

Desventajas del uso de varios subprocesos

Se recomienda utilizar el menor número de subprocesos posible, puesto que de este modo se reduce el uso de recursos del sistema operativo y se mejora el rendimiento. Al diseñar la aplicación, el subprocesamiento debe tener en cuenta los requisitos de recursos y conflictos potenciales.

Los requisitos de recursos son los siguientes:

  1. El sistema utiliza memoria para la información de contexto requerida por los procesos, objetos AppDomain y subprocesos. Por tanto, el número de procesos, objetos AppDomain y subprocesos que se pueden crear está limitado por la memoria disponible.
  2. Si se realiza un seguimiento de un gran número de subprocesos, se utiliza una gran cantidad de tiempo de procesador. Si hay demasiados subprocesos, la mayoría no avanzarán de forma significativa.
  3. Si la mayor parte de los subprocesos actuales pertenecen a un proceso, los subprocesos de otros procesos se programan con menor frecuencia.
  4. El control de la ejecución del código con muchos subprocesos es complejo y puede constituir una fuente de muchos errores.
  5. Para destruir los subprocesos es necesario conocer lo que podría suceder y controlar dichos problemas.
  6. Si se proporciona acceso compartido a los recursos, se pueden producir conflictos. Para evitar los conflictos, es necesario sincronizar o controlar el acceso a los recursos compartidos. Si no se sincroniza el acceso correctamente (en los mismos dominios de aplicación o en otros) se pueden producir problemas como interbloqueos (en los que dos subprocesos dejan de responder mientras cada uno espera a que el otro se complete) y condiciones de anticipación (cuando se produce un resultado anómalo debido a una dependencia decisiva e inesperada de la duración de dos eventos). El sistema proporciona objetos de sincronización que pueden utilizarse para coordinar recursos compartidos entre varios subprocesos. Si se reduce el número de subprocesos, se facilita la sincronización de los recursos.

Entre los recursos que requieren sincronización se incluyen los siguientes:

  1. Recursos del sistema (como puertos de comunicaciones).
  2. Recursos compartidos por varios procesadores (como identificadores de archivo).
  3. Los recursos de un único dominio de aplicación (como campos globales, estáticos y de instancia) a los que tienen acceso varios subprocesos.

Demostración de Creación un Hilo Parte I:

2/15/2009, 8:00 PM

Esta demostración veremos lo simple como se puede crear Hilos y lo que debemos de tener en cuenta para ello.

Para iniciar iniciamos nuestro Visual Studio y creamos nuestro proyecto:

Cuando creamos nuestro proyecto, visual estudio nos crea un archivo llamado Program.cs (cs = el lenguaje con el que se va ha trabaja es el C#), donde se genera por defecto el siguiente código:

clip_image001

Los pasos de creación de la demos es la siguiente:

  1. Como podemos observar no incluye el namespace System.Threading,que es con el trabajaremos todo que tenga que ver con multihilos y programación asíncrona. Por lo anterior lo primero que debemos que hacer es agregar el siguiente código para agregar dicho namespace. using System.Threading;
  2. Crearemos un método llamado TrabajandoMultihilos, donde en este caso nos mostrará en pantalla un mensaje "Estamos Utilizando Multihilos".
  3. ThreadStart es el delegado que utilizaremos en el momento de creación de un Hilo, para indicar el método que el hilo deberá de llamar en el momento de trabajar (la acción o tarea que realizar el hilo).
  4. Crearemos unos mensajes usando console.WriteLine, para indicar cada una de las faces de creación y ejecución.
  5. Creamos elHilo NuestroHilo y lo relacionaremos con el delegado que hemos creado. Él codigo que nos resultará es el siguiente:

clip_image001[5]

y el Resultado que obtenemos es el siguiente:

clip_image001[8]

Descarga el código de la demo aqui:

http://www.4shared.com/file/88283184/108bb6a5/IntroduccionHilos.html

En las proximas post vamos a profundizar mucho más este tema.

Saludos,

clip_image001[10]





Imagine Cup 2009, Más que una Competencia es una Oportunidad de Desarrollar tus Potenciales.

2 02 2009

IC09_Background_02

Algo que siempre me ha motivado a participar en Imagine Cup, es que puedo encontrar mucho apoyo para el desarrollo de potenciales.

Bueno pero la pregunta es cómo es que ayudan?… bueno acontinuación relaciono todos los programas de apoyo de materiales de entrenamientos que puedes conseguir con SOLO REGISTRANDOTE.

bueno espero que esta información sean de provecho,

Saludos,

Learning Resources Overview

Microsoft Learning and the Microsoft IT Academy Program welcome you to Imagine Cup 2009! We’re excited to offer a variety of learning resources to help you prepare for this year’s competition. While these resources do not cover every competition topic, they provide a wide variety of learning support for the Microsoft technologies featured in the Imagine Cup competitions listed below.

Microsoft Press 25th Anniversary “Free E-Book of the Month” Offer
Help us celebrate our 25th anniversary with a free e-book offer!  These books are available for a free download (with registration) between January 21 and January 28, 2009.

Windows Server 2008 Core Administrator’s Pocket Consultant
(Mitch Tulloch with the Windows Server Core Team)
The practical guide to Server Core! This guide delivers ready answers for administering your Server Core installation. Zero in on essential support and maintenance tasks using quick-reference tables, instructions, and lists. You’ll get the focused information you need to solve problems and get the job done!

SQL Server 2005 Integration Services Step by Step
(Paul Turley, Joe Kasprzak, Scott Cameron, Satoshi Iizuka, and Pablo Guzman)
Your hands-on, step-by-step guide to building data integration solutions for the enterprise. Teach yourself the fundamentals of SQL Server Integration Services—one step at a time. This practical, learn-by-doing tutorial delivers the guidance you need to transform and consolidate data—and build solutions that support your business intelligence needs.

EXPANDED OFFER! E-Reference Libraries from Microsoft Press now available for additional tracks

The Microsoft IT Academy Program is pleased to sponsor a limited number of 6-month subscriptions to the IT Professional and Developer E-Reference Libraries. These subscriptions are now offered free of charge to registered participants in IT Challenge, Software Design, Embedded Development, Game Development, and Robotics & Algorithm. Subscriptions are available on a first-come, first-served basis.

If you are a registered student in any of these invitationals, visit the learning page for your competition for offer details and information on how to access your subscription.

About the Microsoft IT Academy Program

Our world-class resources help students obtain the hands-on skills and practice they need to succeed in today’s technology careers. We integrate the latest learning resources for innovative training, and provide students with the opportunity to validate the skills they require in order to become more employable.

Select your competition below:


Software Design

Embedded Development

Game Development

Robotics & Algorithm

IT Challenge