Wie implementiere ich thread-local storage ohne native Unterstützung in Embedded-C?

In Embedded-C-Systemen ohne thread_local oder POSIX-APIs kann man thread-spezifische Daten manuell verwalten. Beispiel mit FreeRTOS:

void *threadData[MAX_TASKS];

void setThreadData(void *data) {
    int id = xTaskGetCurrentTaskHandle();
    threadData[id] = data;
}

void *getThreadData() {
    int id = xTaskGetCurrentTaskHandle();
    return threadData[id];
}

Diese Methode verwendet den Task-Handle als Index in einem globalen Array, das thread-spezifische Daten speichert.

com

Newsletter Anmeldung

Bleiben Sie informiert! Wir informieren Sie über alle neuen Beiträge (max. 1 Mail pro Woche – versprochen)