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

C++: Multithreading

Aufgabe zu std::packaged_task

Testen Sie unsere 2019 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Parametrisieren Sie das bereits erstellte Übungsprogramm, um die Anzahl der vorhandenen Prozessorkerne zu ermitteln und in Abhängigkeit davon die Package Tasks festzulegen.
02:51

Transkript

Ihre Aufgabe zu packaged_task besteht es darin, das Programm packagedTask.cpp weiter zu parametrisieren. Sie sollen es insofern parametrisieren, dass sie jetzt nicht die feste Anzahl von vier packaged_task annehmen, sondern abfragen, wie viel Cores Ihre Plattform anbietet. Und abhängig davon die Anzahl Ihre packaged_tasks wählen. Wenn Sie bei std::thread::hardware_concurrency() den Wert Null erhalten, sollen Sie als default vier für die Anzahl Ihrer CPUs annehmen. Weitere Information haben Sie hier auch noch, indem Sie auf dem Link std::packaged_task klicken. Nun aber zur Lösung. Jetzt habe ich packaged_task parametrisiert. Das Funktionsobjekt, die Summation kennen Sie bereits, da hat sich nichts geändert. Die große Änderung geschieht hier. Wenn es hier default wird, per default habe ich vier Cores. Die Anzahl der Zahlen, die ich sortiert habe bleibt gleich. Und jetzt frage ich hier mit std::thread::hardware_concurrency ab, wie viel Cores mein Rechner besitzt. Bekomme ich hier als Ergebnis hw, was ungleich Null, dann nehme ich diesen Wert an. Wenn nicht, nehme ich meinen Guess, meinen Schätzwert 4. Jetzt wird es ein bisschen komplizierter. Jetzt summiere ich nicht von 0 bis 4, sondern bis zur hwConcurr. Hier setze ich die Integers und hier erzeuge ich meine Funktionsobjekte, die von begin bis end addieren sollen. Dann definiere ich meine Tasks. Und diesmal ist natürlich auch über die hardware_concurrency parametrisiert. Dann erzeuge ich aus jedem packaged_task meinen Future. Damit ich es leicht verwalten kann, schiebe ich den offenen Vektor von Futures drauf. Jetzt bin ich schon wieder auf dem Zustand, wo ich rechnen kann. Hier gehe ich über alle meine packaged_task drüber, ziehe mir den ersten packaged_task draus, schiebe ihn in anderen Thread rein und lasse ihn im Hintergrund rechnen. Und zum Schluss frage ich hier alle meine Future ab und summiere das Ergebnis auf sum drauf. Ja, und wenn wir es ausführen, …. kommt das gleiche Ergebnis raus. Aber es ist durchaus möglich, dass die Kalkulation, dass die Berechnung auf einer unterschiedlichen Anzahl von Threads stattfindet.

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!