Durante el día de hoy vamos a realizar una pequeña introducción a Grand Central Dispatch.

Grand Central Dispatch es una API creada por Apple y escrita en C para ejecutar código concurrente en dispositivos OSX y iOS.

Grand Central Dispatch nace con la salida de Mac OS X 10.6 (Snow Leopard), con el objetivo de optimizar el uso de los múltiples núcleos de los procesadores en las aplicaciones. El GCD se creó para dar soporte a programas escritos en C. Esto es evidente en la forma en que funciona: funciones trabajando sobre estructuras de datos opacas.

La mayoría de veces, el programador define las instrucciones a ejecutarse y las mete en una cola para que sean ejecutadas, DispatchQueue.

DispatchQueue prioriza las instrucciones dependiendo de la prioridad definida por el programador.

Cuando se hace uso de DispatchQueue, es para priorizar la clasificación de las tareas pesadas, por ejemplo la actualizar la User Interface, o el uso de consumo de datos en la red.

El programador debe tomar en cuenta y especificar el orden de ejecución, porque si no lo hace, todos los procesos o instrucciones se ejecutarán en la cola que prioriza la interfaz gráfica de usuario.

En el GCD, los programadores deben dar o clasificar las diferentes prioridades, el GCD cuenta con 6 prioridades, que dependiendo el orden, deben ejecutarse:

  1. userInteractive
  2. userInitiated
  3. default
  4. utility
  5. background
  6. unspecified

Como se puede observar tenemos un listado de prioridades que van desde el 1 al 6, siendo 1 (userInteractive) la de mayor relevancia, es decir la prioridad más alta, y la prioridad 6 (unspecified) será la prioridad más baja.

Una de las principales ventajas que ofrece GCD al programador, es liberarlo de la responsabilidad de manejar hilos dentro de un proceso concurrente, para eso, el programador se centra en gestionar las colas.

Que es una cola?

En el desarrollo iOS podemos hacer uso de colas , llamase cola a las tareas que se ejecutan una detrás de otra, por ejemplo dispatchqueuecreate.

En el desarrollo de aplicaciones iOS disponemos de 3 colas globales o concurrentes para dar prioridad a nuestras tareas:

DISPATCHQUEUEPRIORITY_HIGH

DISPATCHQUEUEPRIORITY_LOW

DISPATCHQUEUEPRIORITY_DEFAULT

La cola que maneja el hilo principal es:

MAIN_QUEUE

Grand Central Dispatch nos hace las cosas muy fáciles a la hora de manejar colas para trabajar en entornos multiproceso.

En qué casos es buena idea (o imprescindible) usarlos ?

Como se puede ver GCD, ofrece de manera simple una forma de manejar la multitarea en aplicaciones para iOS, el entender cómo se definen, se priorizan o se llaman las colas activas utilizando el DispatchQueue es la clave para que nuestras aplicaciones puedan ser más robustas y utilicen eficientemente el procesador.

Keep Coding...