Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

C++: Multithreading

Thread-lokale Daten in der Anwendung

Testen Sie unsere 2013 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Thread-lokale Daten werden pro Thread angelegt und gehören diesem Thread.
03:29

Transkript

In dieser Lektion werde ich Ihnen Thread-lokale Daten vorstellen. Und wie immer bekannt hier, erst die Theorie, dann die Praxis. Was sind Thread-lokale Daten? Thread-lokale Daten werden durch das Schlüsselwort thread_lokal definiert. Und das sind Daten, die für jeden Thread erzeugt werden. Das heißt, diese Daten gehören exklusiv einem Thread, sie verhalten sich wie statische Variablen. Was heißt es? Das heißt, dass sie bei der ersten Verwendung angelegt werden und an die Lebenszeit ihres Threads gebunden sind. So werden die thread-lokalen Daten auch thread-lokaler Speicher genannt. Das ist das Gleiche. Ein bisschen Info habe ich hier noch. Wenn Sie dem Link hier folgen, bekommen Sie noch weitere Dateis zu thread-lokalen Daten. Und nun bin ich schon in der Lage Ihnen das Beispiel zu zeigen. In dem Beispiel verwende ich vier Threads. Jedes von diesen Threads führt das gleiche Arbeitspaket aus. Das Arbeitspaket ist die Funktion addThreadLokal. Die Funktion benötigt den Argument, den String, t1, t2, t3, t4. Das ist sozusagen auch der Name des Threads. Jetzt schauen wir uns mal die Funktion addThreadLokal an. Diese Funktion empfängt den String per Reference. Und wenn Sie dann genauer hinschauen, ist der String thread-lokal. Was heißt es? Dieser String S wird für jeden dieser Threads, 1, 2, 3, 4, angelegt. Das kann man relativ schön beobachten. Dieser String S, zu den addiere ich S2 hinzu. Das heißt, S hat initial den Wert „hello from“. Und ich addiere jeweils t1, t2, t3, t4 per String-Konkatenation hinzu. Damit sich die Ausgaben nicht überlappen, schütze ich sie durch den lock_guard. Deutlich interessanter ist aber schon, dass ich mich hier die Adresse des thread-lokalen Strings, den Strings hier oben, ausgeben lasse. Da werden Sie sehen, dass obwohl ich diesen String per Reference erhalte, vier verschiedene Adressen erscheinen werden. Das heißt, es werden tatsächlich vier verschiedene Strings erzeugt. Warum? Klar, es ist thread-lokal und ich habe vier Threads. Jetzt zeige ich Ihnen es in der Anwendung. Mach es ein bisschen größer. Und jetzt sehen Sie es. Obwohl ich immer zu dem gleichen Thread T1, T2, T3 und T4 hinzu addiere, wird der String nicht länger. Und der zweite Hinweis, dass jedes Thread seinen eigenen String besitzt, ist die Adresse des Strings. Sie sehen sie, hier habe ich F4, hier habe ich 64, hier habe ich EC, hier habe ich FC. Das sind also tatsächlich vier verschiedene Adressen. Das ist natürlich ein deutlicher Hinweis drauf, dass ich hier vier verschiedene Strings habe, und genau jedes Thread hat seinen eigenen String. In dieser Lektion habe ich Ihnen thread-lokale Daten in der Theorie und in der Praxis vorgestellt. Thread-lokale Daten gehören exklusiv einem Thread und sind an Lebenszeit eines Threads gebunden.

C++: Multithreading

Lernen Sie die High-Level Threading-Schnittstelle in C++ kennenb und nutzen, die Sie in Form von Threads, Tasks, Locks und Bedingungsvariablen zur Anwendung bringen.

2 Std. 40 min (39 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Software:
Exklusiv für Abo-Kunden
Erscheinungsdatum:16.08.2016

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!