Está en la página 1de 5

Qué es la pro

gramación multihilo y qué ventajas tiene

En el post de hoy explicaremos en que consiste la programación multihilo, así como cuándo
puede representar una ventaja respecto a la programación tradicional o secuencial.

¿Qué es la programación multihilo?

Para poder explicar claramente lo que es la programación multihilo, lo primero es necesario


aclarar una serie de conceptos para entender la diferencia entre multiproceso y multihilo.

Los sistemas operativos multitarea ejecutan o emulan ejecutar más de una tarea a la vez. Esto
es solo cierto si dispone de más de un procesador, si no, va alternando procesos en un solo
procesador.

La ejecución de un proceso implica que el mismo en el momento de ejecución utiliza todo el


procesador y con el espacio de memoria asignado. En sistemas multitarea, se van alternando
procesos y cuando uno libera el procesador para que otro se ejecute, también libera la
memoria asignada.

Esto lo realiza el planificador del sistema operativo lo cual implica la correcta gestión de la
memoria para guardar los datos del proceso saliente, provocando cierta sobrecarga del
sistema.

La programación multihilo se basa en que, dentro del desarrollo de la aplicación, hemos


definido diversas tareas para que se ejecuten a la vez. Todas estas tareas forman parte de un
mismo proceso.

Para nuestro sistema operativo tendremos un solo proceso con diversas tareas a ejecutar. En
este sentido el planificador se encarga de que cuando le toque ejecutarse a nuestro proceso,
las tareas del mismo se vayan alternando, con la diferencia que, al ser de un mismo proceso,
no se libera espacio de memoria ni procesador, como si se haría en el caso de alternar
procesos.

Esto agiliza por lo tanto la ejecución de nuestro proceso que además puede simular paralelizar
la ejecución de varias tareas a la vez.

Para realizar una programación multihilo, deberemos indicar en el código de programación


mediante el comando correspondiente que queremos lanzar diversas tareas en diferentes
hilos.
¿Cuándo vale la pena usar la programación multihilo?

El hecho de usar programación multihilo no implica que siempre vamos a tener una mejora de
rendimiento y es potestad del programador el decidir cuándo conviene usar este tipo de
programación. En líneas generales, si la aplicación que hemos desarrollado es muy simple no
tiene sentido plantearse este tipo de programación.

Tampoco puede que sea buena idea emplear el multihilo para aplicaciones excesivamente
complejas pues provocará excesiva sobrecarga y sea más un problema que una ventaja.

Entonces la pregunta clave es ver cuñando va a ser ventajoso usar la programación multihilo
que nos permitirá paralelizar la ejecución de varios procesos y de esta forma mejorar el
rendimiento de nuestra aplicación.

Por regla general, se considera que una aplicación es candidata a ser programa en multihilo
cuando cumple las siguientes premisas:

1. La aplicación va a requerir se realizar diversas tareas claramente diferenciadas con un


alto coste computacional que sea mayor al que se genera en un cambio de contexto,
es decir, de liberación del espacio de memoria asignado.
2. El resultado de las tareas que se ejecuten en diferentes hilos no debe depender del
resultado de otras tareas, ya que, de lo contrario, las tareas se estarían esperando unas
a otras y al final el rendimiento sería menor del esperado.
3. Se prevea que pueda haber tareas retenidas o bloqueadas por estar esperando a una
lectura de disco, por ejemplo. En estos casos, esta tarea se bloquea y otra entra en
acción, aprovechando de esta forma la programación multihilo.
Ejemplos de ventajas de la programación multihilo

Para entender mejor lo que hemos comentado, pondremos dos ejemplos en los que puede
resultar beneficioso el uso de la programación multihilo. Uno de los casos de uso más
comunes es cuando una aplicación precisa acceder a diferentes orígenes, como servidores o
bases de datos, para procesar la información recogida de cada origen.

En programación secuencial, los accesos a estos orígenes serían secuenciales y hasta que no
tuviésemos toda la información, no podríamos procesarla. Si por el contrario usamos
programación multihilo, podríamos lanzar en paralelo el acceso a los diferentes orígenes
provocando una mejora sensible del rendimiento.

Un segundo caso de uso tradicional de la programación multihilo es cuando dentro de una


aplicación queremos priorizar alguno de los procesos que comporta sobre el resto. Es muy
habitual usar este tipo de programación en videojuegos priorizando la parte de renderización
de la imagen sobre otros procesos paralelos que se ejecutan a la vez.

Como podemos ver en estos dos casos de uso, la mejora del rendimiento o la priorización de
procesos, son las ventajas más claras que podremos obtener en la programación multihilo.
Si además nuestra aplicación multihilo se ejecuta sobre un sistema multiprocesador, entonces
las ventajas se multiplicarán al paralelizar realmente todos los procesos, como hemos
comentado el inicio de este post.

Espero que este post haya sido de vuestro interés y que a partir del mismo os sumerjáis un
poco más en este tipo de programación que, aunque os pueda parecer novedoso, no lo es.
Cuéntanos tus experiencias si alguna vez has desarrollado una aplicación multihilo.

Curso relacionado: FP de Grado Superior en Desarrollo Aplicaciones Multiplataforma


Qué es la programación multihilo y qué ventajas tiene
Carlos Yañez
21-02-2018
Desde hace ya bastantes años, los sistemas operativos son multitarea, lo que les permite
ejecutar diversos procesos de forma simultánea. Esta capacidad ha permitido el hecho de
optimizar la programación hacia modelos multiproceso o multihilo.
En el post de hoy explicaremos en que consiste la programación multihilo, así como
cuándo puede representar una ventaja respecto a la programación tradicional o
secuencial.
¿Qué es la programación multihilo?
Para poder explicar claramente lo que es la programación multihilo, lo primero es
necesario aclarar una serie de conceptos para entender la diferencia entre multiproceso y
multihilo.
Los sistemas operativos multitarea ejecutan o emulan ejecutar más de una tarea a la vez.
Esto es solo cierto si dispone de más de un procesador, si no, va alternando procesos en
un solo procesador.
La ejecución de un proceso implica que el mismo en el momento de ejecución utiliza todo
el procesador y con el espacio de memoria asignado. En sistemas multitarea, se van
alternando procesos y cuando uno libera el procesador para que otro se ejecute, también
libera la memoria asignada.
Esto lo realiza el planificador del sistema operativo lo cual implica la correcta gestión de la
memoria para guardar los datos del proceso saliente, provocando cierta sobrecarga del
sistema.
La programación multihilo se basa en que, dentro del desarrollo de la aplicación, hemos
definido diversas tareas para que se ejecuten a la vez. Todas estas tareas forman parte de
un mismo proceso.
Para nuestro sistema operativo tendremos un solo proceso con diversas tareas a ejecutar.
En este sentido el planificador se encarga de que cuando le toque ejecutarse a nuestro
proceso, las tareas del mismo se vayan alternando, con la diferencia que, al ser de un
mismo proceso, no se libera espacio de memoria ni procesador, como si se haría en el
caso de alternar procesos.
Esto agiliza por lo tanto la ejecución de nuestro proceso que además puede simular
paralelizar la ejecución de varias tareas a la vez.
Para realizar una programación multihilo, deberemos indicar en el código de
programación mediante el comando correspondiente que queremos lanzar diversas tareas
en diferentes hilos.
¿Cuándo vale la pena usar la programación multihilo?
El hecho de usar programación multihilo no implica que siempre vamos a tener una
mejora de rendimiento y es potestad del programador el decidir cuándo conviene usar
este tipo de programación. En líneas generales, si la aplicación que hemos desarrollado es
muy simple no tiene sentido plantearse este tipo de programación.
Tampoco puede que sea buena idea emplear el multihilo para aplicaciones excesivamente
complejas pues provocará excesiva sobrecarga y sea más un problema que una ventaja.
Entonces la pregunta clave es ver cuñando va a ser ventajoso usar la programación
multihilo que nos permitirá paralelizar la ejecución de varios procesos y de esta forma
mejorar el rendimiento de nuestra aplicación.
Por regla general, se considera que una aplicación es candidata a ser programa en
multihilo cuando cumple las siguientes premisas:
1. La aplicación va a requerir se realizar diversas tareas claramente diferenciadas con
un alto coste computacional que sea mayor al que se genera en un cambio de
contexto, es decir, de liberación del espacio de memoria asignado.
2. El resultado de las tareas que se ejecuten en diferentes hilos no debe
depender del resultado de otras tareas, ya que, de lo contrario, las tareas se
estarían esperando unas a otras y al final el rendimiento sería menor del esperado.
3. Se prevea que pueda haber tareas retenidas o bloqueadas por estar esperando a
una lectura de disco, por ejemplo. En estos casos, esta tarea se bloquea y otra
entra en acción, aprovechando de esta forma la programación multihilo.
Ejemplos de ventajas de la programación multihilo
Para entender mejor lo que hemos comentado, pondremos dos ejemplos en los que
puede resultar beneficioso el uso de la programación multihilo. Uno de los casos de uso
más comunes es cuando una aplicación precisa acceder a diferentes orígenes, como
servidores o bases de datos, para procesar la información recogida de cada origen.
En programación secuencial, los accesos a estos orígenes serían secuenciales y hasta que
no tuviésemos toda la información, no podríamos procesarla. Si por el contrario usamos
programación multihilo, podríamos lanzar en paralelo el acceso a los diferentes orígenes
provocando una mejora sensible del rendimiento.
Un segundo caso de uso tradicional de la programación multihilo es cuando dentro de una
aplicación queremos priorizar alguno de los procesos que comporta sobre el resto. Es muy
habitual usar este tipo de programación en videojuegos priorizando la parte de
renderización de la imagen sobre otros procesos paralelos que se ejecutan a la vez.
Como podemos ver en estos dos casos de uso, la mejora del rendimiento o la priorización
de procesos, son las ventajas más claras que podremos obtener en la programación
multihilo.
Si además nuestra aplicación multihilo se ejecuta sobre un sistema multiprocesador,
entonces las ventajas se multiplicarán al paralelizar realmente todos los procesos, como
hemos comentado el inicio de este post.
Espero que este post haya sido de vuestro interés y que a partir del mismo os sumerjáis un
poco más en este tipo de programación que, aunque os pueda parecer novedoso, no lo es.
Cuéntanos tus experiencias si alguna vez has desarrollado una aplicación multihilo.
Curso relacionado: FP de Grado Superior en Desarrollo Aplicaciones Multiplataforma

También podría gustarte