Namensräume
Varianten
Aktionen

tss_set

Von cppreference.com
< c‎ | thread
Definiert im Header <threads.h>
int tss_set( tss_t tss_id, void *val );
(seit C11)

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

Der Destruktor, falls vorhanden, wird nicht aufgerufen.

Inhalt

[bearbeiten] 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

[bearbeiten] Rückgabewert

thrd_success bei Erfolg, thrd_error andernfalls.

[bearbeiten] Hinweise

Das POSIX-Äquivalent dieser Funktion ist pthread_setspecific.

Normalerweise wird TSS verwendet, um Zeiger auf Speicherblöcke zu speichern, die dynamisch zugewiesen und 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 wiederholt, danach geht der Speicher verloren.

[bearbeiten] Beispiel

int thread_func(void *arg) {
    tss_t key;
    if (thrd_success == tss_create(&key, free)) {
        tss_set(key, malloc(4)); // stores a pointer on TSS
        // ...
    }
} // calls free() for the pointer stored on TSS

[bearbeiten] Referenzen

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

[bearbeiten] Siehe auch

liest aus dem thread-spezifischen Speicher
(Funktion) [bearbeiten]