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
- La función del hilo toma y devuelve
void *. - Cada hilo necesita su propio argumento, nunca una variable de bucle compartida.
- El join es lo que vuelve seguros el resultado y la limpieza.
Palabras clave y builtins usados aquí
NULLforifintlongreturnstaticvoid
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.
Paso 1 de 3 en Arrancar hilos; paso 1 de 10 en Hilos y concurrencia.