tss_set
|
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
|
Dieser Abschnitt ist unvollständig
Grund: Verbessern, eventuell 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)); // 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) |