UC3M

Grado en Ing. Telemática/Sist. Audiovisuales/Sist. de Comunicaciones

Arquitectura de Sistemas

Septiembre 2017 - Enero 2018

11.2.3. Hilos: Creación

#include <pthread.h>
/*
* The function returns 0 on sucess; 
*    EAGAIN with insufficient resources;
*    EINVAL with invalid settings;
*    EPERM  with no permission to set information
*/    
int pthread_create
      (pthread_t *thread, 
      const pthread_attr_t *attr,
      void *(*start_routine) (void *), 
      void *arg);

La función pthread_create crea un nuevo hilo con las siguientes características:

  • El hilo padre y el hilo hijo comparten todas información del montón (heap). Eso incluye las variables definadas como globales; i.e., fuera de todas las funciones. Estas variables se comparten tanto en lectura como en escritura.

  • Cada hilo tiene su propio pila (stack) de ejecución. Esa pila es privada y cada hilo ejecuta mediante su pila. El hilo padre que crea el hilo continúa con su ejecución y el nuevo comienza su ejecución en la función pasada como tercer parámetro. Por último, los parametros de entrada que recibe la función (void*) son pasados como cuarto parámetro de la función.

  • La función de ejecución retorna un puntero con los resultado de la ejecución del hilo (con return o con pthread_exit).

  • Para poder trabajar con el hilo creado y poder acceder a lo que devuelve mediante un pthread_join, la función requiere un puntero a un tipo de dato pthread_t.

  • Por último, los atributos de los hilos permiten configurar algunos detalles como puede ser el tamaño máximo de pila o su prioridad de ejecución mediante pthread_attr_t. En el caso de las hebras POSIX, el sistema operativo que se encargará e repartir el tiempo de ejecución en cada procesador.