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

C++: Multithreading

Operationen auf Threads

Testen Sie unsere 2021 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Threads haben ein reiches Interface anzubieten. Hier bekommen Sie einen Überblick darüber, welche Funktionen Ihnen dabei zur Verfügung stehen.
04:14

Transkript

In dieser Lektion möchte ich Ihnen Operatlionen auf Threads genauer vorstellen. Das soll ich zuerst mit der Theorie und dann in der Praxis machen. So, hier sehen Sie die ganze Tabelle der Operationen, die es so gibt rund um Threads. Zuerst gibt es "t.joinable ( )". Mit "t.joinable ( )" können Sie den Threads abfragen, ob er noch joinable ist. Sie kriegen natürlich dann die Antwort "true" oder "fale" zurück. In Thread ist joinable, wenn auf ihn noch nicht "join" oder "detach" aufgerufen wurde. Weiter geht es mit "t.get_id ( )", beziehungsweise der freien Funktion "std::this_thread::get_id ( )". Diese Funktion geben Ihnen die ID des Threads zurück. Die ID ist natürlich eindeutig und manchmal sehr praktisch. Stellen Sie sich vor, Sie führen mehrere Threads gleichzeitig aus und Sie möchten wissen, welcher Thread gerade am Zuge ist, dann geben Sie einfach die ID des Threads auf der Konsole aus. Dann kommen wir zur der Funktion "std::thread::hardware_concurrency ( )". Diese Funktion gibt Ihnen einen Hinweis darauf zurück, wie viel Threads auf Ihre Plattform im optimalfall laufen sollen. "Hinweis" aus dem Grund, weil in den Anfangszeiten der aktuelle Werr 0 war, das müssen Sie wissen. Dieser Hinweis ist gleichzeitig auch ein Hinweis darauf wie viel [unverständlich] Ihre Plattform anbietet. [Unverständlich] natürlich die Idealzahl für die Zahl hier Threads. Dann kommen zwei interessante Funktionen: "sleep_until" und "sleep_for". Mit diesen Funktionen können Sie Threads schlafen legen, für eine absolute Zeit und für eine relative Zeit, also für eine Zeitdauer. Dann die Funktion "std::this_thread::yield ( )". Wenn Sie diese Funktion aufrufen, drückt es aus, dass Ihr Thread sagt, ein anderer Threads darf zum Zuge kommen, das ist ein Hinweis an das System. Da gibt es noch zwei Funktionen um Threads zu tauschen, erstmal als Methode als "t.swap" oder als freie Funktion. Damit können Sie Threads tauschen und das können Sie sogar tun während der Thread lock hält. Das war jetzt die Theorie, nun folgt die Praxis. Und schon geht es weiter mit dem Beispiel. Ich fange gleich hier an mit der [unverständlich]. Mit "std::thread::hardware_concurrency ( )" gibt Ihnen Ihr System aus, viel viel Threads auf Ihrem System im optimalfall laufen sollten. Ich habe hier gleich die Ausgabe des Programms gegenübergestellt. Damit können Sie sofort sehen, welche hardware_concurrency auf meine Plattform ich habe, "2 concurrency". Gut. Dann führe ich zwei Threads aus: t1 und t2. In diesen Threads verwende ich [unverständlich] und die geben einfach nur Ihre ID raus. Und wenn Sie hier unten hinschauen, in die Ausgeben, sehen Sie, tatsächlich ist der Main-Thread hier schneller wie der Kinder-Thread. Zuerst gibt der Main-Thread seine ID raus, durch die Anweisung hier, es entspricht dem hier, dann kommt t2 zum Zuge, der hier. Interessant. Dann kommt t2 zum Zuge und Teiler vom t1, das wird ganz spät ausgeführt. Das sehen Sie schön, wie Sie mit Hilfe der Thread IDs sehen können, wie die Threads in verschiedene Reihenfolge ausgeführt worden und das es auch nicht nachvollziehbar ist, welcher Thread als erstes zum Zuge kommt. Hier [unverständlich] ich die zwei Threads noch, das heißt, "t1.get_id( ), t2.get_id( )", muss hier genau vertauscht sein, ist en bisschen schwierig nachzuvollziehen. Hier sehen Sie "40, 44, 40 44", diesen vertausch die IDs und zum Schluss gebe ich noch aus "FROM MAIN:this_thread::get_id ( ) ". In diesem Beispiel haben ich Ihnen ein paar Funktionen aus den vielen Operationen des Threads vorgestellet. Insbesondere haben Sie gesehen, wie Sie schön mittels der Thread ID schauen können,welcher Thread grade läuft. Was Sie natürlich aber auch schön gesehen haben ist, dass es nicht vorabsehbar ist, welcher Thread in welcher Reihenfolge ausgeführt wird. Da hilft Ihnen nur die get_id, um das Interleaving, also das verschränkte Ausführen der Threads sichtbar zu machen.

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!