Está en la página 1de 3

Threads

Bien, ya sabemos que es un proceso, ahora hablemos de los Threads, un concepto un


poco más sencillo de comprender.
Varás, los Threads, también conocidos como sub-procesos o hilos, podemos definirlos
como una secuencia de instrucciones las cuales el sistema operativo puede programar
para su ejecucción. A diferencia de un proceso, los threads son entidades mucho más
pequeñas, lo cual los hace fácilles de gestionar, tanto es así que un thread es la unidad
más pequeña a la cual un procesador puede asignar tiempo.
A diferencias de los procesos, los cuales viven dentro del sistema operativo, los threads
viven dentro de los procesos. Un thread se crean, ejecutan y finalizan dentro de un
proceso, dicho en otras palabras: Un thread le pertenece a un proceso, y, asu vez, un
proceso puede poseer múltiples threads. Si lo vemos en términos de base de datos

pudiésemos decir que esta es una relación uno a muchos. 😛

Algo interesante a mencionar es que debido a que los Thread existen dentro de los
procesos, estos pueden compartir información entre ellos; Algo a lo cual sin duda le
podemos sacar mucho provecho, pero, que también puede llegar hacer complicado de

manejar. 😲 Uno de los problemas más comunes al momento de trabajar con Threads tiene
por nombre Race condition, y es, en esencia, un problema que surge cuando más de un
thread intenta acceder y modificar un espacio en memoria compartido, ocasionando que
el programa se comporte de forma inadecuada.
Visto de otra forma, un thread no es más que un proceso, pero en pequeño, al igual de un
proceso un thread se ejecuta dentro de un contexto y posee instrucciónes a realizar

MULTITHREAD
Un thread o hilo es un “semi-proceso”, que tiene su propia pila, y que ejecuta una porción
de código dada. A diferencia de un proceso real, un thread normalmente comparte su
memoria con otros threads (en la cual, tal como sucede con los procesos, cada thread
tendrá asignado su espacio de memoria).
Un grupo de threads es un conjunto de “hilos de ejecución” que están corriendo todos
dentro del mismo proceso. Dado que comparten todos la misma porción de memoria,
pueden acceder a las mismas variables globales, la misma memoria de heap, los mismos
descriptores de archivos, etc. Todos corren en paralelo (por ejemplo: usando porciones
del tiempo asignado al proceso en general o, si están dentro de un sistema con
multiprocesadores, pueden eventualmente correr de forma paralela realmente).
La ventaja de usar un grupo de threads en lugar de un programa normal en serie es que
muchas operaciones pueden ser llevadas a cabo de forma paralela y, de esta forma, los
eventos asociados a cada actividad pueden ser manejados inmediatamente tan pronto
como llegan (por ejemplo: si tenemos un thread manejando la interface de usuario y otro
manejando las consultas a una base de datos, podremos ejecutar consultas complejas
realizadas por el usuario y aun así responder a la entrada del mismo mientras la consulta
está siendo ejecutada).
La ventaja de usar un grupo de threads en vez de un grupo de procesos es que el cambio
de contexto entre threads es realizado mucho más rápidamente que el cambio de
contexto entre procesos (un cambio de contexto significa que el sistema operativo cambia
la ejecución de un thread o proceso a la ejecución de otro). Por lo tanto, las
comunicaciones entre dos threads son usualmente más rápidas y sencillas de implementar
que las comunicaciones entre dos procesos.
Por otro lado, debido a que los threads dentro de un grupo comparten el mismo espacio
de memoria, si uno de ellos corrompe el espacio de su memoria, los otros threads
también sufrirán las consecuencias. Con un proceso, el sistema operativo normalmente
protege a un proceso de otros y si un proceso corrompe su espacio de memoria los demás
no se verán afectados.
Multithreading vs. Single threading
Así como podemos tener múltiples procesos corriendo en nuestra PC, también podemos
tener múltiples threads corriendo. De esta forma aparecen dos grandes grupos de
sistemas operativos respecto de la forma de ejecución de threads.
Single threading
·cuando el sistema operativo no reconoce al concepto de thread.
Multithreading
cuando el sistema operativo soporta múltiples threads de ejecución dentro de un
proceso
Conclusión
En conclusión, un proceso no es más que la instancia de un programa, el cual es creado y
controlado por el sistema operativo. Los procesos son entidades independientes y no
pueden compartir información entre ellos. Para que un proceso pueda ser ejecutado es
necesario que este posea por lo menos un thread.
Por otro lado, un thread es la unidad más pequeña a la cual un procesador puede asignar
tiempo. Los threads poseerán la secuencia más pequeña de instrucciones a ejecutar. Los
threads se crean, ejecutan y mueren dentro de los procesos, siendo capaces de compartir
información entre ellos.
Con los threads y los procesos seremos capaces de implementar la programación
concurrente, y, dependiendo de la cantidad de procesadores la programación en paralelo.

También podría gustarte