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
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.