Funciones para crear hilos

Pthread_create

Explicacion:

Esta fucnion sirve para crear un hilo (unidad de ejecucion) dentro de un proceso. Se le pasan 4 argumentos.

Prototipo

#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
);

Explicación de cada argumento

  1. pthread_t *thread

    Ejemplo:

    pthread_t hilo;
    pthread_create(&hilo, NULL, funcion_hilo, NULL);
    
  2. const pthread_attr_t *attr

    Ejemplo (por defecto):

    pthread_create(&hilo, NULL, funcion_hilo, NULL);
    
  3. void *(*start_routine)(void *)

  4. void *arg

Valor de retorno

Ejemplo completo

#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;
}

Funciones para liberar los recursos del hilo

Pthread_join