miércoles, 30 de marzo de 2016

Thread en lenguaje C sobre entorno linux - introduccion

PTHREAD
HILOS, por ejemplo los procesos, son un mecanismo para permitir que un programa pueda hacer más de una cosa a la vez. Al igual que con los procesos, subprocesos parecen funcionar simultáneamente;El kernel de Linux es el que planifica de forma asíncrona, interrumpiendo cada hilo de vez en cuando para dar a otros la oportunidad de ejecutarse.

Conceptualmente, existe un hilo dentro de un proceso. Los hilos son una unidad de grano más fino de la ejecución de procesos. Cuando se invoca un programa, Linux crea un nuevo proceso y en ese proceso crea un solo hilo, que ejecuta el programa de forma secuencial. Ese hilo puede crear hilos adicionales; todos los hilos se ejecutan en el mismo programa y en el mismo proceso, pero cada hilo puede ser la ejecución de una parte diferente del programa en cualquier tiempo dado.
Se a visto cómo un programa puede bifurcar un proceso hijo. El proceso hijo que inicialmente ejecuta el programa de su padre, con la memoria virtual de su padre, los descriptores de archivo, etc.
"En copiado". El proceso hijo puede modificar su memoria, cierre de los descriptores de fichero, y similares sin afectar a su padre, y viceversa. Cuando un programa crea otro hilo, nada se copia. La creación y el hilo creado comparten el mismo espacio de memoria, los descriptores de archivos y otros recursos del sistema que el original.
Si cambiamos de un hilo, el valor de una variable, por ejemplo, el otro hilo posteriormente verá el valor modificado. Del mismo modo, si un hilo cierra un descriptor de archivo, otros hilos no pueden leer o escribir en el descriptor de archivo. Debido a un proceso y todos sus hilos pueden ser ejecutando sólo un programa a la vez, si cualquier hilo dentro de un proceso de llama uno de las funciones exec , todos los otros hilos se terminaron (el nuevo programa puede, por supuesto, crear una nuevo hilo). 
GNU / Linux implementa la API de hilos POSIX estándar (conocido como pthreads). Todas funciones de hilo y tipos de datos se declaran en el archivo de cabecera <pthread.h> .Las funciones del pthread no están incluidos en la biblioteca estándar C. En su lugar, están en libpthread, lo que debería agregar -lpthread a la línea de comandos cuando se vincula a su programa. 

No hay comentarios.:

Publicar un comentario