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

C++: Multithreading

Aufgaben zu Bedingungsvariablen

Testen Sie unsere 2021 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Die Aufgabe in diesem Video ist die Erstellung eines Pingpong-Spiels. Natürlich bekommen Sie außerdem wieder einen Literaturtipp für weitergehende Infos.
03:13

Transkript

In dieser Aufgabe wird sportlich. Warum? Weil Sie ein Pingpongspiel simulieren. Die Idee ist, Sie haben einen Thread, der eine boolische Variable auf true, und anderen Thread, der eine boolische Variable auf false setzt. Das Ganze sollen Sie mit Bedingungsvariablen synchronisieren. Ja, natürlich soll das Spiel nur eine endliche Anzahl an Ballwechseln bieten. Wenn Sie die Details über Condition- Variablen noch mal nachlesen wollen, können Sie es auch hier tun. So, und schon los geht es mit dem Spiel. Das ist meine boolische Variable dataReady, die ich initial auf false setze. Hier. Und dann habe ich zwei Threads – t1(setTrue), t2(setFalse). Die machen aus, was drin steht Der setzt den boolischen Wert auf true, der setzt auf false. Und die machen das immer, und die benachrichtigen sich gegenseitig, wenn sie fertig sind mit der Arbeit, sodass der andere hinzukommt. Und zum Schluss setze ich nun dataReady auf false und kopiere den Wert aus. Gut. Was macht jetzt setTrue und setFalse? setTrue hat den counter, der kleiner als COUNTLIMIT sein muss. Das heißt, ich sage also: Ball 50mal wechseln soll stattfinden. In dieser Wahlschleife verwende ich den mutex_, den habe ich hier unten auch verwendet. Und wenn ich den mutex_ mit unique_lock gelockt habe, gehe ich in die wait-Bedingung rein. Da warte ich, indem ich das lck halte und indem ich den zusätzlichen boolischen Wert als Prädikat verwende, drauf, bis ich benachrichtigt wurde. Dann setze ich dataReady auf true. Okey. Dann habe ich einmal sozusagen den Ball mir beim Schläger zurückgeschossen. Ich erhöhe also den counter. Gebe aus, damit wir was sehen, den Wert von dataReady. Und jetzt benachrichtige ich die andere Condition-Variable. Und Sie sehen diese condVar1 wartet auf die Benachrichtigung der gleichen Condition-Variablen hier. Und es ist praktisch antisymmetrisch. Und diese condVar2 benachrichtigt diese condVar2 hier. Das habe ich so intelligent verschränkt, dass ich sozusagen mein Pingpongspiel beginnen lassen kann. Gut, das mache ich jetzt. conditionVariablePingPong. Und Sie sehen, das war ein schnelles Match. Die ganze Geschichte beginnt mit false, true, false true, false true. Bis ich hier unten beim Ende false bin. Genau hier. In dieser Aufgabe habe ich ein Pingpongspiel mit Condition-Variablen simuliert. Und Sie sehen, Sie können durch das, dass Sie zwei Condition-Variablen verwenden, die sich gegenseitig auf zwei verschiedenen Threads jeweils aufrufen, um Pingpongspiel zwischen Threads simulieren.

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!