Namespaces
Variants

tss_set

From cppreference.net
Definiert in Header <threads.h>
int tss_set ( tss_t tss_id, void * val ) ;
(seit C11)

Setzt den Wert des threadspezifischen Speichers, der durch tss_id identifiziert wird, für den aktuellen Thread auf val . Verschiedene Threads können unterschiedliche Werte für denselben Schlüssel setzen.

Der Destruktor, falls verfügbar, wird nicht aufgerufen.

Inhaltsverzeichnis

Parameter

tss_id - Thread-spezifischer Speicherschlüssel, erhalten von tss_create und nicht gelöscht durch tss_delete
val - Wert, auf den der thread-spezifische Speicher gesetzt werden soll

Rückgabewert

thrd_success bei Erfolg, thrd_error andernfalls.

Hinweise

Das POSIX-Äquivalent dieser Funktion ist pthread_setspecific .

Typischerweise wird TSS verwendet, um Zeiger auf Blöcke dynamisch allokierten Speichers zu speichern, die für die Verwendung durch den aufrufenden Thread reserviert wurden.

tss_set kann im TSS-Destruktor aufgerufen werden. Wenn der Destruktor mit einem Nicht-NULL-Wert im TSS-Speicher beendet wird, wird er von thrd_exit bis zu TSS_DTOR_ITERATIONS Mal erneut versucht, wonach der Speicher verloren geht.

Beispiel

int thread_func(void *arg) {
    tss_t key;
    if (thrd_success == tss_create(&key, free)) {
        tss_set(key, malloc(4)); // speichert einen Zeiger im TSS
        // ...
    }
} // ruft free() für den im TSS gespeicherten Zeiger auf

Referenzen

  • C17-Standard (ISO/IEC 9899:2018):
  • 7.26.6.4 Die tss_set-Funktion (S: 282-283)
  • C11-Standard (ISO/IEC 9899:2011):
  • 7.26.6.4 Die tss_set-Funktion (S: 387)

Siehe auch

(C11)
liest aus threadspezifischem Speicher
(Funktion)