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

C++: Multithreading

Statische Variablen

Testen Sie unsere 2016 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Der aktuelle C++-Standard sichert zu, dass statische Variablen mit Blockgültigkeit threadsicher initialisiert werden.
02:47

Transkript

In dieser Lektion stelle ich Ihnen vor, dass statische Variablen mit Blockgültigkeit threadsicher initialisiert werden. Ich habe hier ein relativ kleines Gruppbeispielchen, aber es reicht bereits aus. Sie sehen, ich habe hier eine statische Variable mySharedDataInt, und diese hat Blockgültigkeit. Das heißt, sie ist gültig im Gültigkeitsbereich des Blockes. Ja, und was ist die Schöne dran? Wenn Sie diese Funktion blockScope() aus mehreren Threads gleichzeitig ausführen, stellt die C++ Laufzeit sicher, dass mySharedDataInt genau nur einmal threadsicher initialisiert wird. Das zeige ich natürlich noch am Beispiel. Ein klassisches Beispiel für die threadsichere Initialisierung einer statischen Variablen ist der Singleton Pattern, hier in der MeyersSingleton() Form. Hier möchte ich speziell was zu erklären. Das ist MezerSingleton(). In diesem setze ich den Default-Konstruktor auf Default, den Default-Destruktor auf Default. Und damit erkläre ich den Compiler: sorge du für die Implementierung, ich definiere ios-Interface. Das Gleiche in der anderen Richtung mache ich mit Delete. Durch Delete sage ich zum Compiler: den Copy-Konstruktor, den Copy-Zuweisungsoperator, den du implementieren könntest, der soll nicht zur Verfügung stehen, eben durch Delete. Und hier komme ich zum Herzfunktionierten. Die statische Methode getInstance, in der ich intern die statische Variable instance erzeuge. Und die Zusicherung mit C++ 11 Standard ist es, dass das jetzt eben in den threadsicher Art und Weise geschieht. Und hier verwende ich die ganze Funktion natürlich. Hier habe ich zwei Threads, T1 und T2, geb die Adresse von MeyersSingleton::getInstance() raus. Damit sehen wir zu mindestens, dass Instance jeweils das gleiche Objekt ist, da sie die gleiche Adresse besitzen. Ja, und das war es eigentlich schon. Ich muss jetzt hier laufen lassen. Und Sie sehen, es passiert genau das, was ich sag. Ich habe zwei Singlton Aufrufe, die unter der Decke auf das gleiche Objekt abgebildet werden. Das ist die gleiche Adresse. In dieser Lektion habe ich Ihnen gezeigt, dass die C++ Laufzeit seit C++ 11 sicherstellt, dass statische Variablen mit Blockgültigkeit threadsicher initialisiert werden.

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!