Entradas

Mostrando entradas de febrero, 2017

Buenas practicas con Async/Await

Con la aparición de los procesadores con varios núcleos se ha vuelto critico el saber manejar la multitarea. Desde la primera versión del Framework de .Net existe el espacio de nombre System.Threading , el cual se puede considerar un wrappear para acceder a las directivas de sincronización del sistema, acceder al pool de hilos o crear nuestros propios hilos. Posiblemente con System.Threading se puede realizar cualquier tarea. Pero la dificultad de su uso y mantenimiento han invitado a crear otro tipo de librerías más sencillas. Primero se abordo la multitarea de CPU. Con una nueva clase para manejar tareas que es Task , un controlador llamado Parallel y una serie de clases para manejar colecciones de forma asíncrona. Esto nos permite aprovechar los diversos núcleos de los procesador actuales. Permitiendo lanzar tareas en paralelo y sincronizarlas de una forma sencilla. Pero había un escenario que seguia siendo complicado. Y con la aparición de los entornos táctiles se emp

WCF con Async/Await

Con el Framework 4.5 se introdujo un mecanismo para evitar los bloqueos de una forma sencilla. Aunque la principal motivación de esta mejora han sido los entornos táctiles en aplicaciones de cliente, también se pueden utilizar para no bloquear el pool de hilos de un web servicie. Cuando se habla de multitarea se puede referir a dos conceptos diferentes que hay que tener bien claros. Multitarea de CPU o multithreading, que consiste en particional una tarea para aprovechar los diferentes núcleos que dispone la máquina. Este tipo de multitarea no es la que vamos a tratar en este artículo, y no es recomendable utilizarla en una máquina dedicada a dar servicio a traves de la red. Multitarea asyncronica IO, que consiste en no bloquear el procesador mientras se realizan tareas de entrada y salida de datos. Un tiempo en el que nuestra máquina no hace nada. Los casos típicos de estos bloqueos son el acceso a disco, consultas a bases de datos, comunicación con otras máquinas. Los servido