Esta fucnion sirve para crear un hilo (unidad de ejecucion) dentro de un proceso. Se le pasan 4 argumentos.
#include <pthread.h>
int pthread_create(
pthread_t *thread, // 1. Identificador del hilo
const pthread_attr_t *attr, // 2. Atributos del hilo
void *(*start_routine)(void*), // 3. Función que ejecutará el hilo
void *arg // 4. Argumento pasado a esa función
);
pthread_t *thread
pthread_t. Es una estrcutura que sirve para identificar el hiloEjemplo:
pthread_t hilo;
pthread_create(&hilo, NULL, funcion_hilo, NULL);
const pthread_attr_t *attr
NULL y se crean con atributos por defecto.Ejemplo (por defecto):
pthread_create(&hilo, NULL, funcion_hilo, NULL);
void *(*start_routine)(void *)
Es la función que ejecutará el hilo.
Debe tener la forma:
void *funcion(void *arg);
Al terminar, puede retornar un puntero (void *) que después se recupera con pthread_join.
void *arg
NULL.0 → éxito.!= 0 → error (por ejemplo, falta de recursos).#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
void *mi_funcion(void *arg) {
int *num = (int *)arg;
printf("Hola desde el hilo, recibí: %d\n", *num);
pthread_exit(NULL); // opcional, se puede usar return NULL;
}
int main() {
pthread_t hilo;
int valor = 42;
if (pthread_create(&hilo, NULL, mi_funcion, &valor) != 0) {
perror("Error al crear el hilo");
exit(1);
}
// Esperar a que termine el hilo
pthread_join(hilo, NULL);
printf("El hilo terminó\n");
return 0;
}