Almacenamiento local por hilo en C
_Thread_local le da a cada hilo su propia copia de una variable.
#include <stdio.h>
static _Thread_local int calls = 0;
static _Thread_local char scratch[64];
int bump_local(void) {
calls++;
snprintf(scratch, sizeof scratch, "call %d", calls);
return calls;
}
const char *last_message(void) {
return scratch;
}
Cómo funciona
- Cada hilo lee y escribe una instancia independiente.
- No hace falta lock, porque nada se comparte.
- Sirve para búferes de trabajo y contadores por hilo.
Palabras clave y builtins usados aquí
_Thread_localcharconstintreturnsizeofstaticvoid
El intento, en números
- Líneas
- 14
- Caracteres a escribir
- 248
- Tokens
- 58
- Ritmo de tres estrellas
- 105 tpm
Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 33 segundos.
Paso 2 de 2 en Sin bloqueos y local; paso 9 de 10 en Hilos y concurrencia.