Thread-spezifische Daten vs. Thread-lokaler Speicher

Ich habe Kerrisk's gelesenDie Linux-Programmierschnittstelle: Ein Handbuch zur Linux- und UNIX-Systemprogrammierung, Kapitel 31 über Themen. Das Kapitel enthält Thread-spezifische Daten (Abschnitt 31.3.4) und Thread-lokalen Speicher (Abschnitt 31.4). Die Themen wurden auf den Seiten 663-669 behandelt.

Thread-spezifische Daten (pthread_key_create, pthread_setspecific, pthread_getspecific, und Freunde) sieht leistungsfähiger aus, scheint jedoch etwas umständlicher zu sein und den Speichermanager häufiger zu verwenden.

Thread-lokaler Speicher (__thread bei statischen und globalen Deklarationen) sieht etwas weniger leistungsstark aus, da es auf die Kompilierungszeit beschränkt ist, aber es scheint einfacher zu verwenden zu sein und zur Laufzeit außerhalb des Speichermanagers zu bleiben.

Ich könnte mich in Bezug auf den Laufzeit-Speichermanager irren, da sich möglicherweise Code hinter den Kulissen befindet, der aufruftpthread_key_create wenn es begegnet__thread Variablen.

Kerrisk bot keinen Vergleich / Kontrast der beiden Strategien an, und er gab keine Empfehlung ab, wann er welche in einer bestimmten Situation verwenden sollte.

So fügen Sie der Frage Kontext hinzu: Ich bewerte eine Drittanbieter-Bibliothek. Die Bibliothek verwendet Globalsnicht Verwenden Sie Sperren, und ich möchte es in einem Multithread-Programm verwenden. Das Programm verwendet Threading, um die Netzwerklatenzen zu minimieren.

Gibt es einen zweifelsfreien Gewinner? Oder gibt es verschiedene Szenarien, die die Verwendung des einen oder anderen rechtfertigen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage