Anwendungen, die das Multithreading verwenden, bieten eine ganze Reihe von Vorteilen, z.B.:

  • Effektiverer Einsatz der CPU
  • Mehr Betriebssicherheit
  • Größere Leistung bei mehreren Prozessoren

Effektiverer Einsatz der CPU

In vielen LabVIEW Anwendungen werden Instrumente und Datenerfassungsgeräte synchron aufgerufen. Solche Aufrufe benötigen oft einige Zeit. Bei einer Anwendung mit nur einem Thread blockiert oder verhindert solch ein synchroner Aufruf die Ausführung jeden anderen Tasks innerhalb der LabVIEW-Anwendung bis die Erfassung vollständig ist. In LabVIEW wird dieses Blockieren durch das Multithreading verhindert. Solange der synchrone Erfassungsaufruf in einem Thread ausgeführt wird, sind andere Teile des Programms nicht von der Erfassung abhängig. Die Datenanalyse und Datei-I/O werden auf verschiedenen Threads ausgeführt. Auf diese Weise wird die Anwendung während der Erfassung weiter ausgeführt. Sie wird also nicht blockiert, bis die Erfassung vollständig ist.

Dadurch verbessert eine Multithread-Anwendung die Effektivität des Prozessors, denn der Prozessor wird genutzt, wenn ein Thread einer Anwendung ausgeführt wird. Jedes beliebige Programm, das aus Dateien liest oder schreibt, I/O-Operationen durchführt oder die Benutzeroberfläche durch Polling nach Aktivität abfragt, kann vom Multithreading profitieren, ganz einfach weil die CPU während dieser synchronen Aktivitäten effektiver arbeitet.

Mehr Betriebssicherheit

Durch die Aufteilung des Programms in verschiedene Threads können Sie andere Operationen in Ihrem Programm daran hindern, wichtige Operationen zu behindern. Das beste Beispiel dafür ist die Auswirkung, die die Benutzeroberfläche auf zeitkritische Operationen haben kann. Bildschirmaktualisierungen oder Antworten an Benutzerereignisse können oftmals die Ausführungsgeschwindigkeit eines Programms beeinträchtigen. Wenn z. B. ein Nutzer ein Fenster verschiebt, dessen Größe verändert oder ein neues Fenster öffnet, wird die Programmausführung angehalten, solange der Prozessor auf dieses Ereignis der Benutzeroberfläche reagiert.

Bei LabVIEW-Multithread-Anwendungen werden die Operationen der Benutzeroberfläche in bestimmte Threads der Benutzeroberfläche aufgeteilt und die Bereiche Datenerfassung, Datenanalyse und Daten-I/O des Programms können in verschiedenen Threads ausgeführt werden. Wenn dem Thread der Benutzeroberfläche eine geringere Priorität zugewiesen wird als zeitkritischen Operationen, können Sie sicherstellen, dass die Operationen der Benutzeroberfläche die CPU nicht in der Ausführung von wichtigeren Operationen, wie z. B. der Erfassung von Daten von computerbasierten Instrumenten, beeinträchtigt. Durch die Zuweisung einer geringeren Priorität an die Benutzeroberfläche wird die gesamte Betriebssicherheit erhöht, einschließlich der Datenerfassung und -verarbeitung, der Leistung von LabVIEW sowie der gesamten Rechnerleistung, weil sichergestellt wird, dass kein Datenverlust entsteht, wenn z. B. ein Fenster verschoben wird.

Ein weiteres Beispiel dafür, dass Multithreading mehr Betriebssicherheit bietet, ist die Durchführung von Datenerfassung mit hoher Geschwindigkeit und Darstellung der Ergebnisse. Bildschirmaktualisierungen sind häufig langsamer als andere Operationen, wie z. B. kontinuierliche Hochgeschwindigkeitsdatenerfassung. Wenn Sie versuchen, große Datenmengen mit hoher Geschwindigkeit in einer Anwendung mit nur einem Thread zu erfassen und diese dann in einem Graphen darstellen möchten, kann im Datenpuffer möglicherweise ein Überlauffehler auftreten, weil der Prozessor gezwungen ist, zu viel Zeit für die Bildschirmaktualisierung aufzuwenden. Ein Überlauffehler des Datenpuffers führt zu Datenverlust.

Bei einer LabVIEW-Multithreadanwendung, bei der die Benutzeroberfläche in ein eigenes Thread verlagert ist, kann der Datenerfassungstask auf einem anderen Thread mit einer höheren Priorität liegen. Bei diesem Beispiel werden die Datenerfassung und die Datenanzeige unabhängig voneinander ausgeführt, so dass die Erfassung kontinuierlich läuft und die Daten ohne Unterbrechung an den Speicher gesendet werden können. Die Anzeige wird so schnell wie möglich ausgeführt und zeichnet alle Daten auf, die während der Ausführung im Speicher vorhanden sind. Der Datenerfassungs-Thread hat eine höhere Priorität als der Anzeige-Thread, so dass während einer Bildschirmaktualisierung kein Datenverlust entsteht.

Größere Leistung bei mehreren Prozessoren

Einer der bedeutendsten Vorteile von Multithreading ist die Nutzung der Leistung von mehreren Prozessoren. Viele Highend-Rechner bieten heute zwei oder mehr Prozessoren für zusätzliche Rechnerleistung. Multithreadanwendungen nutzen die größtmögliche Leistung eines Rechners. Bei Multithreadanwendungen, in denen verschiedene Threads simultan ausgeführt werden, kann jeder Prozessor auf einem anderen Thread ausgeführt werden. Bei einem Rechner mit mehreren Prozessoren können die Anwendungen sogar exakt zeitgleich ausgeführt werden, wobei die gesamte Systemleistung erhöht wird.

Im Gegensatz dazu können Anwendungen mit nur einem Thread nur auf einem einzigen Prozessor ausgeführt werden, wodurch sie die verschiedenen Prozessoren zur Leistungssteigerung nicht nutzen können. Das heißt also, um die maximale Leistung bei einem Multithread-Betriebssystem und/oder Rechnern mit mehreren Prozessoren zu erreichen, muss es sich um eine Multithread-Anwendung handeln.