tss_set
| 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
| Dieser Abschnitt ist unvollständig Grund: Verbesserung, vielleicht nach POSIX-Beispielen zur Inspiration suchen |
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
| (C11) |
liest aus dem thread-spezifischen Speicher (Funktion) |