..


Sponsored Links

Concurrent programming in C + +

Artikel von Stefano Cancedda geschrieben
Seite 1 von 6

Ablaufprogrammierung bietet die Gewähr, dass die Anweisungen immer in Reihenfolge ausgeführt, ohne Variationen. Die daraus resultierende Verhalten ist deterministisch: Einsetzen der gleichen Eingänge, die Ausgabe erhalten Sie das gleiche Ergebnis.
Für jedes Programm, das mit dem Betriebssystem ist ein Prozess erstellt, einem geschützten Speicherbereich zugewiesen. Dies gewährleistet die Möglichkeit, voneinander unabhängige Prozesse, die gleichzeitig arbeiten, ohne Fehler.

Verschiedene (und fortgeschrittene) ist das Concurrent Programming. Vor der Belagerung eingeführt werden soll und wie es funktioniert, meiner Meinung nach, als eine bestimmte Art von Objekt ein Kernel-Thread.

Da das Gewinde Kernel-Objekte werden durch das Betriebssystem verwaltet werden, und haben zwei grundlegende Funktionen:

  • Jeder Thread hat eine private Datenstruktur, die einen eigenen Stack, Informationen zur Ausnahme, die nächste auszuführende Anweisung speichert;
  • Jeder Thread Aktien mit dem gesamten Prozess einen gemeinsamen Speicherbereich.
Der Einsatz von thread bietet mehrere Vorteile in Bezug auf die Ausführung. Insbesondere werden wir voll ausnutzen die Leistung der Multi-Core-CPUs, die derzeit die dominierende Technologie in den Markt für Personal Computer. Es ist undenkbar, dass eine gewisse Komplexität moderner Anwendungen in einer sequentiellen Weise konzipiert sind, könnte es somit vorteilhaft sich die Zeit nehmen, nur eine der Kern, dass die Maschine bietet.

Als weiterer Vorteil kann es als zwei verschiedene Prozesse, auf denen der gleiche Code sind, eventuell mit verschiedenen Parametern, sind weniger effizient als zwei Threads, die direkt verwenden können den gemeinsam genutzten Speicher zu sehen. In einem System, das nicht unterstützt Themen, wenn Sie fahren mehrmals das gleiche Programm wollen, müssen Sie mehrere Prozesse auf dem gleichen Programm. Diese Technik funktioniert, aber es ist eine Verschwendung von Ressourcen und ist langsamer.

Drittens haben die Fäden der Vorteil, wenn sie genannt werden die I / O Blockade: anstatt zu warten, für die Veranstaltung durch den Benutzer Anhalten der Ausführung des Algorithmus ausgelöst, können Sie einen neuen Thread zu starten und zu verhindern unnötige Ausfallzeiten die Verschlechterung der Gesamtleistung.

Auf der anderen Seite braucht die Unterstützung von Concurrent Programming Konstrukte Synchronisation notwendig, um zufällige Zugriffe auf Shared-Memory-Fehler verursachen, in den Ausgang zu vermeiden. Auch macht die Programmierer eingespeist, um eine Reihe von Fehlern oft unberechenbar durch die deterministische Verhalten des Programms.

Darüber hinaus Synchronisation Konstrukte haben eine kostengünstige, sowohl in Bezug auf Maschinen benötigte Zeit, um ihren Code in einer bestimmten Performance-Verlust durch die Erwartungen, die durch diese Konstrukte in Ordnung erzeugt werden, um Fairness in der Leistung Wettbewerber gewährleisten, verursacht auszuführen.

Die wichtigsten Objekte, die die Verwaltung des Wettbewerbs ermöglichen, sind unten und erwartete im Detail beschrieben in den folgenden Abschnitten:

  • Flüchtigen Elemente
  • Interlocked Funktionen
  • Semaphoren
  • Kritische Abschnitte
  • Events
  • Timer
  • Mutex
Jedes dieser Elemente passen auf eine natürliche Weise zu einer bestimmten Klasse von einfachen Probleme zu lösen. Für komplexe Probleme nur die gleichen Gegenstände zusammen, um ein korrektes Ergebnis und zufriedenstellende Passage der Lösung von Problemen, die die Verwendung von einer der frühesten und die Probleme, wie oben definiert sind, erfordern erhalten kombiniert ist ein komplexes sehr kritisch. Die Kombination von Synchronisierungsobjekte kann kompliziert sein, am besten, weil Sie nicht erhalten eine ausreichend hohe Leistung in einem worst case, weil man nicht so leicht finden können, die Lösung, die die Richtigkeit des Ergebnisses garantiert. Nicht zuletzt im schlimmsten Fall: Es ist ein ernstes Problem und nicht sofort zu identifizieren. Diese Stelle ist sehr häufig, sowohl für die Brisanz der Fragen werden wir diskutieren, ist die Tatsache, dass das Debuggen immer in einer gleichzeitigen Umwelt problematisch sind die Strömungen in der Tat nicht-deterministische Ausführung jeder Ausführung des Programms, die Reihenfolge der Prozessor führt die Operationen ist immer anders.

In der selben Kategorie ...
E-Learning
ASP.NET (Kurs) ASP.NET (Kurs)
Vollständige natürlich zum Erstellen von Webanwendungen ab 49 €.
Front Page (Ebook) Front Page (Ebook)
Erstellen von Webseiten ohne HTML-Kenntnisse. Mit nur 25 €.
Linux (Kurs) Linux (Kurs)
Ein vollständiger Reiseführer von Open-Source-System. Ab 49 €.
Sponsored Links