Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

C++: Multithreading

Ein- und Ausgabestreams

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Ein- und Ausgabestreams sind in C++ threadsicher. Damit ist sichergestellt, das zwei Ausgabestreams gleichzeitig auf die Konsole schreiben können.
03:10

Transkript

In dieser Lektion zäume ich das Pferd mal von hinten auf. Ich will Ihnen einfach zeigen, was passiert, wenn Sie mehrere Threads gleichzeitig auf eure geimeinsamen Variable arbeiten lassen und das eben unsynchronisierten Art und Weise. Wie mache ich das? Erstens, meine geimeinsame Variable ist der Ausgabekanal "std: :cout", den sehen Sie hier. Zweitens, was tue ich? Ich starte 1, 2, 3, 4, 5, 6 Threads. Jeder Thread repräsentiert ein Arbeiter und was macht jeder Arbeiter? Der hat 3 Arbeitspakete zu bewältigen 1, 2, 3. Schläft nach jedem Arbeitspaket 200 Millisekunden. Sie können auch sagen, jedes Arbeitspakete benötigt 200 Millisekunden und dann schreit er laut raus, dass er mit seiner Arbeit fertig ist. Es schreit also seinen Namen raus "Work", Arbeitspaket, "done". Ja und wenn ich das Programm ausführe und meine sechs Threads starte, schauen wir mal, was die Ausgabe ergibt. Dann muss ich es ein bisschen größer machen, dann sehen Sie, hier schaut es ganz gut aus, aber wenn ich es jetzt zum Beispiel nochmal ausführe, dann kann das ganz schön durcheinander laufen. Hier sehen Sie, Sie haben keine Ahnung mehr, welche der Arbeiter welchen Satz rausgeschrien hat. Es ist einfach vollkommenes durcheinander. Nun zum theoretischen Teil. Eigentlich habe ich ein bisschen geschummelt. Tatsächlich sind die Ein- und Ausgabestreams Threads Safe oder threadsicher. Ich verwende sie trotzdem sehr gern, um zu zeigen, was passieren kann, wenn Threads in beliebiger Reihenfolge eine gesharete oder gemeinsame Variable verwenden. Sie haben gesehen, es kommt ein vollkommenes durcheinander raus. Was heißt die Ein- und Ausgabestreams sind Threads Safe? Das heißt, der C++ Standard sichert zu, dass die einzelnen Zeichen auf dem Ausgabestream nicht geschützt werden müssen. Anders ausgedrückt, die einzelnen Zeichen werden atomar geschrieben. Es ist aber durchaus möglich, dass die Ausgabeanweisungen verschränkt ausgeführt werden. Das heißt, da haben Sie nicht die Zusicherung, dass hier die Anweisung atomar ausgeführt wird. Das war der Grund, wieso sich die Buchstaben in beliebiger Reihenfolge überlappt haben. Die Aussage, die ich grade über den Ausgabestream "std: :cout" gemacht habe, galt natürlich auch für alle Eingabestreams in C++, für alle Streams in C++. Die Quintessenz ist relativ einfach. Das Schreiben auf "std: :cout" ist threadsicher. Anders ausgedrückt, dass die Buchstaben sich überlappen, ist einfach ein optisches Problem. Das Programm ist wohldefiniert. In dieser Lektion habe ich Ihnen in visueller Art gezeigt, wie sich Threads gegenseitig überlappen können.

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!