Programación paralela: ¿Debería interesarte?

por Dic 29, 2015Programmers0 Comentarios

La programación paralela es el uso de varios procesadores trabajando en conjunto para dar solución a una tarea en común, estos se dividen el trabajo y cada procesador hace una porción del problema al poder intercambiar datos por una red de interconexión o a través de memoria.

Es tendencia que cada vez haya más núcleos en los procesadores, ya no sólo por rendimiento sino por las ventajas en cuanto a ahorro de energía, temperatura, entre otras cosas. Esto implica que casi cualquier aplicación pueda trabajar en entornos con múltiples núcleos, lo que hace realmente importante sacarle provecho a la programación multi-subproceso.

Banners navideños

¿Por qué es importante?Programación paralela ¿Debería interesarte?

Antes, para aumentar el rendimiento de una aplicación bastaba con moverla a una máquina con un procesador más rápido. Sin embargo, hoy en día, el rendimiento se obtiene a través de sacarle partido a más. Esto quiere decir que si queremos que una aplicación llegue a ser escalable ésta debe sacar partido a múltiples hilos de ejecución y, por lo tanto, a múltiples nodos de procesamiento.

Este tipo de programación paralela siempre ha sido muy compleja, sobre todo a la hora de depurar aplicaciones en las que existen muchas probabilidades de generar interbloqueos o “race conditions”. En su momento, con .NET 4.0 y Visual Studio se incluyeron nuevas bibliotecas, tipos y herramientas para facilitar la programación multi-núcleo, área de suma importancia para los programadores.

Programación paralela ¿Debería interesarte?

Muchos programadores recomiendan a .NET 4.0 para realizar este tipo de tareas. Con él disponemos de lo que se ha bautizado como “Parallel Extensions” que están formadas por tres componentes:

  • La biblioteca de tareas paralelas (TPL, Task Parallel Library): esta biblioteca dentro del espacio de nombres System.Threading.Taks.Parallel incluye construcciones para ejecutar tareas repetitivas independientes entre sí en paralelo y de forma automática, como por ejemplo versiones paralelas de los bucles For y ForEach.
  • El motor de ejecución paralela de Linq (PLINQ Execution Engine): como se desprende de su nombre, se trata de una versión paralelizada de Linq to Objects, que nos permite lanzar consultas integradas en el lenguaje aprovechando la capacidad de paralelismo del sistema.
  • Las estructuras de datos para coordinación (CDS, Coordination data Structures): ofrece un conjunto de primitivas de sincronización y de colecciones preparadas para multisubproceso (thread-safe) que simplifican los escenarios paralelizados. Por ejemplo, tenemos diccionarios, pilas y colas thread-safe, y objetos especiales para sincronización de hilos como el SpinWait o el SpinLock.
Sobre el autor: Astro Cloud

Sobre el autor: Astro Cloud

Astro

Astro es el monito de Facilcloud, una empresa que te ofrece soluciones Cloud para tu web. Astro vino de la selva a la ciudad con una laptop y se unió a Facilcloud. Ahora promueve sus servicios de cloud server, PaaS y almacenamiento cloud, que son personalizados, seguros y eficientes. Si quieres conocer más sobre Facilcloud y sus ofertas, ingresa a https://facilcloud.com

0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.