Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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.
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.
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.
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.
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:
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.
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.