En computación existen programas multihilo, en donde alguna parte del programa se puede ejecutar de manera simultánea. Para poder explicar mejor esto, haré una analogía con el mundo real.
Supongamos que se nos ha encomendado la misión de transportar a 12 personas de la Ciudad 1 a la Ciudad 2 (con una distancia entre estas dos ciudades de 100 km) y se nos ha asignado un presupuesto máximo de 100 mil dólares (USD), como primera opción tenemos un auto utilitario con un costo de 20 mil dólares (USD) que tiene una velocidad máxima de 100 km/h. En contraparte también tenemos un auto deportivo con un costo de 100 mil dólares (USD) con una velocidad máxima de 300 km/h. La única condición es que solamente se puede transportar a una única persona en cada viaje. Para ejemplificar mejor esta situación, usaremos la siguiente imagen.
A primera vista, comprar un auto deportivo es una mejor decisión, debido a que podremos realizar la misma tarea en un tiempo menor, en este ejemplo 8 horas contra las 24 horas que son necesarias si compramos el auto utilitario. Y hasta hace unos años, esta misma analogía se repetía en el mundo de la computación, en donde cada año salían nuevos procesadores con velocidades superiores de procesamiento, pero llego un punto en donde aumentar la velocidad resultaba en un incremento desproporcionado del precio. Por lo que, regresando al ejemplo anterior, ¿qué pasaría si en vez de comprar el auto deportivo compramos una flotilla de autos utilitarios?
Ahora resulta mejor solución adquirir tres autos utilitarios con un costo de 60 mil dólares (USD) que un auto deportivo con costo de 100 mil dólares (USD), a partir de este momento, nuestra decisión dejo de basarse en el tiempo, porque ambas opciones realizan la misma tarea en el mismo tiempo y ahora el factor de decisión será el costo. Y como es de suponerse, esta misma analogía se repitió nuevamente en el mundo de la computación, de esta manera nacen los procesadores multinucleo.
A primera impresión, la programación multihilo ofrece puras ventajas, pero tiene una singularidad, la cual radica en que es necesario adaptar nuestro programa para que estos puedan hacer uso de todos los núcleos del procesador en donde es ejecutado, esto puede resultar en una tarea complicada si somos programadores amateurs, pero es importante que dominemos esta nueva forma de programación debido a que en la actualidad la prioridad es incrementar la cantidad de núcleos, que la velocidad de estos.
Si deseas leer un artículo más teórico y detallado con respecto a este tema, puedes visitar este artículo que me ha parecido excelente: ¿Por qué se estancaron los Ghz del procesador?
En caso de que no esté disponible el sitio web anteriormente mencionado, dejo a su disposición una snapshot del sitio al momento de redactar el articulo: Documento PDF