0 Tage Serie
c / expert
Snippet

Thread-lokaler Speicher mit _Thread_local

Der in C11 eingeführte Speicherklassenspezifizierer _Thread_local definiert Variablen mit Thread-Speicherdauer. Jeder Thread erhält seine eigene separate Instanz der Variable, die einmal pro Thread initialisiert wird. Dies ermöglicht einen Thread-sicheren globalen Zustand ohne den Performance-Overhead von Mutexen oder Semaphoren zur Synchronisation.

snippet.c
c
1
2
3
4
5
6
7
8
9
#include <threads.h>
#include <stdio.h>
_Thread_local int thread_count = 0;
void increment() {
thread_count++;
printf("Thread count: %d\n", thread_count);
}
Erklärung
1
_Thread_local int thread_count = 0;
Deklariert eine Variable, die für jeden Ausführungs-Thread eindeutig ist.
2
thread_count++;
Erhöht die Instanz der Variable, die nur zum aktuellen Thread gehört.