Namensräume
Varianten
Aktionen

tss_delete

Von cppreference.com
< c‎ | thread
Definiert im Header <threads.h>
void tss_delete( tss_t tss_id );
(seit C11)

Zerstört den durch tss_id identifizierten Thread-spezifischen Speicher.

Der Destruktor, falls er von tss_create registriert wurde, wird nicht aufgerufen (er wird nur beim Beenden des Threads aufgerufen, entweder durch thrd_exit oder durch Rückgabe aus der Thread-Funktion). Es liegt in der Verantwortung des Programmierers sicherzustellen, dass jeder Thread, der von tss_id Kenntnis hat, alle notwendigen Bereinigungen durchgeführt hat, bevor der Aufruf von tss_delete erfolgt.

Wenn tss_delete aufgerufen wird, während ein anderer Thread Destruktoren für tss_id ausführt, ist es nicht spezifiziert, ob dies die Anzahl der Aufrufe des zugehörigen Destruktors ändert.

Wenn tss_delete aufgerufen wird, während der aufrufende Thread Destruktoren ausführt, wird der zu tss_id gehörende Destruktor auf diesem Thread nicht erneut ausgeführt.

Inhalt

[bearbeiten] Parameter

tss_id - Schlüssel für Thread-spezifischen Speicher, der zuvor von tss_create zurückgegeben wurde und noch nicht von tss_delete gelöscht wurde

[bearbeiten] Rückgabewert

(keine)

[bearbeiten] Hinweise

Das POSIX-Äquivalent dieser Funktion ist pthread_key_delete.

Der Grund, warum tss_delete niemals Destruktoren aufruft, ist, dass die Destruktoren (die beim Beenden des Threads aufgerufen werden) normalerweise von demselben Thread ausgeführt werden sollen, der den Wert ursprünglich gesetzt hat (über tss_set), mit dem der Destruktor umgeht, und sogar von den Werten dieses oder anderer Thread-spezifischer Daten abhängen können, wie sie von diesem Thread gesehen werden. Der Thread, der tss_delete ausführt, hat keinen Zugriff auf den TSS anderer Threads. Selbst wenn es möglich wäre, den Destruktor für den Wert jedes Threads, der mit tss_id verbunden ist, aufzurufen, müsste tss_delete mit jedem Thread synchronisieren, nur um zu prüfen, ob der Wert dieses TSS in diesem Thread null ist (Destruktoren werden nur für Nicht-Null-Werte aufgerufen).

[bearbeiten] Beispiel

[bearbeiten] Referenzen

  • C17-Standard (ISO/IEC 9899:2018)
  • 7.26.6.2 The tss_delete function (S. 282)
  • C11-Standard (ISO/IEC 9899:2011)
  • 7.26.6.2 The tss_delete function (S. 386)