typestar

Crear hilos en C

pthread_create arranca un hilo corriendo una función; pthread_join lo espera.

#include <pthread.h>
#include <stdio.h>

static void *worker(void *arg) {
    long id = *(long *) arg;
    printf("worker %ld\n", id);
    return arg;
}

int main(void) {
    pthread_t threads[3];
    long ids[3] = {0, 1, 2};

    for (int i = 0; i < 3; i++) {
        if (pthread_create(&threads[i], NULL, worker, &ids[i]) != 0) {
            return 1;
        }
    }
    for (int i = 0; i < 3; i++) {
        void *result = NULL;
        pthread_join(threads[i], &result);
        printf("joined %ld\n", *(long *) result);
    }
    return 0;
}

Cómo funciona

  1. La función del hilo toma y devuelve void *.
  2. Cada hilo necesita su propio argumento, nunca una variable de bucle compartida.
  3. El join es lo que vuelve seguros el resultado y la limpieza.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
25
Caracteres a escribir
455
Tokens
165
Ritmo de tres estrellas
100 tpm

Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 99 segundos.

Escribe este fragmento

Paso 1 de 3 en Arrancar hilos; paso 1 de 10 en Hilos y concurrencia.

Siguiente →