C++: Multithreading

Gefahren

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Von mehreren Threads gemeinsam genutzte Daten müssen geschützt werden. Dazu bietet C++ Mutexe und Locks in verschiedenen Variationen an.
02:06

Transkript

In dieser Lektion möchte ich Sie darauf sensibilisieren, welche Gefahren lauern, wenn Threads gemeinsame Daten besitzen, wenn Sie sich also die Daten teilen. Das Problem tritt dann auf, wenn die Daten mutabel sind. Das heißt, wenn sie veränderlich sind, wenn sie nicht konstant sind. Das klassische Problem ist ein "kritischer Wettlauf" oder auch eine "Race condition". Was ist ein kritischer Wettlauf? Das ist ein Zustand, indem mindestens zwei Threads ein gleiches Datum verwenden und zumindest einer dieser zwei Threads, versucht sie zu modifizieren. Wenn das auftritt, dann haben Sie ein Data Race oder eine Race condition oder auch ein kritischer Wettlauf, auf Deutsch. Man kann es auch andersrum sehen. Den Bereich, den nur maximal ein Thread zu einem Zeitpunkt verwenden darf, dieser Bereich nennt sich "kritischer Bereich" oder im Englischen "Critical Region". Ich verwende sehr gern die englischen Begriffe, weil sich die englischen Begriffe in dem Bereich durchgesetzt haben. Wenn Sie ein kritischen Wettlauf haben, dann ist das Programmverhalten undefiniert, anders ausgedrückt, Sie haben keine Ahnung, was Ihr Programm für ein Ergebnis produziert. Das Programm kann abstürzen, es kann auch das richtige Ergebnis produzieren oder es kann irgendein Ergebnis produzieren. Der Punkt ist einfach, sobald zwei Threads auf Daten interagieren, die nicht konstant sind, müssen Sie diese Daten schützen. Das hört sich natürlich einfach an, in der Theorie ist die Sache natürlich deutlich schwieriger. Der einfachste Mechanismus, um Daten vor gemeinsamen Zugriff zu schützen ist ein Mutex, steht für "mutual exclusion", das heißt immer nur ein Thread darf zu einem Zeitpunkt die gemeinsamen Daten verwenden. In dieser Lektion habe ich die elementaren Begriffe "kritischer Wettlauf" und "kritischer Bereich" definiert. Dies sind Begriffe, die uns noch häufiger im Laufe der weiteren Schulung begegnen 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!