#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.