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

Aufgaben zu Locks

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Diese Beispielaufgaben verdeutlichen die Anwendung der Reader/Writer Locks in der Praxis. Gleichzeitig erfahren Sie, worauf Sie bei der Anwendung in einer Reihe der STL-Container achten sollten.
03:53

Transkript

In dieser Lektion möchte ich Ihnen die Aufgaben zu Locks kurz vorstellen, bevor ich die erste Aufgabe löse. Ihre erste Aufgabe besteht darin, das Programm in mutex.cpp zu nehmen, die Synchronisation von Standard cout, die in diesem Programm auf Mutexen passiert, auf lock_quards oder unique_lock umzustellen. Und Sie sollen sich natürlich Gedanken machen, ob in diesem Fall ein lock_quard oder unique_lock angebracht ist. Die zweite Aufgabe ist 'ne kleine Themaverfehlung. In dieser zweiten Aufgabe sollen Sie einen Countdown-Zähler machen, der von zehn bis null runterzählt, und genau das im Sekundentakt tut. Und wie können Sie es machen? Indem Sie sich ein bisschen genauer die Timebibliothek anschauen, und gewisse Zeittoren definieren und verwenden. Und dann wie immer die Links auf weiterführende Informationen zu lock_quards, unique_locks und die shared_locks, die als Bestandteil von C++14 sind. Nun aber zur Aufgabe 1. Hier kommt wieder das bekannte Szenario aus sechs "Workern". Jeder Worker muss drei Arbeitspakete bearbeiten. Und immer, wenn er mit seinem Arbeitspaket fertig ist, schreibt er seinen Namen, die Nummer seines Arbeitspaketes auf Standard cout raus. Damit dies synchronisiert passiert, verwende ich einen Mutex. Den locke ich hier und den unlocke ich hier, damit eben nur ein Thread zu einem Zeitpunkt auf Standard cout schreiben darf. Meine Regel ist ganz einfach: Mutexe sollen Sie nicht direkt verwenden, Sie sollen sie immer in Locks verpacken. Und da gibt's jetzt zwei Möglichkeiten. Sie können einen unique_lock verwenden, oder einen lock_quard. Fangen wir mit dem einfacheren an. Der lock_quard ist der einfachere. Was tut Mutex? Ist ein Funktions-Template. Ich nenne ihn jetzt wie nämlich - den "lockGuard". Der bekommt in seinem Konstruktor den Mutex und lockt den natürlich automatisch in seinem Konstruktor. Der lockGuard kann nicht mehr, wie locken und unlocken. Und dann haben wir den ein bisschen mächtigeren, großen Bruder - unique_lock Der benötigt auch einen Mutex, und den nenne ich "uniqGuard", und der lockt auch den Mutex. Jetzt habe ich zwei Möglichkeiten. Das erste, was ich natürlich tue: den coutMutex kommentiere ich aus, weil ich hier den nicht direkt aufrufen will, sondern in einem Lock verpackt. Jetzt gibt's zwei Möglichkeiten: lockGuard und uniqGuard. Was ist hier nötig? Hier ist nun notwendig, dass ich hier den Mutex locke, und dass ich genau hier wieder unlocke. Und um ehrlich zu sein, das kann bereits lockGuard, da brauche ich nicht den mächtigeren großen Bruder uniqGuard, der natürlich auch ein Stückchen teurer ist. Das heißt, das ist die richtige Lösung. Sie verwenden lockGuard, der genau hier den Mutex zieht, sprich - lockt, und genau hier wieder freigibt, sprich - unlockt. Ja, und wenn ich das abspeichere und übersetze, (sehen Sie, es hat übersetzt) Das kann sich auf Ihrer Plattform ändern, und da geht jetzt Thread und der Klang, muss ich ein Passwort einziehen. Unter Windows ist das nicht notwendig. Da wird automatisch der richtige Thread in Library eingezogen. Gut. Dann führe ich es aus. Mutex heißt's! Und ehrlich gesagt, er ist net viel. Sie sehen das gleiche wie vorher, außer dass natürlich die Reihenfolge, in der die Threads ausgeführt werden, nicht definiert ist.

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!