Multi-Threading bzw.
Concurrency wird in C++ direkt
erst ab C++11 unterstützt. Davor war es aber in gängigen Zusatz-Libraries
enthalten (Boost, Qt, ...)
verfügbar. Im wesentlichen bedeutet Multi-Threading,
dass aus einem C++ Programm heraus mehrere, ``parallel laufende'' Prozesse
(=
Threads) gestartet werden können.
Historie:
Qt-Programme mit GUI sind automatisch multi-threaded:
- Thread für
main() und was daraus gerufen wird,
Thread für z.B. Zeichnen der Graphic-Pane
Neuer Trend im Programmieren: Concurrency = Multithreading
Bis vor kurzem war Multi-Threading auf spezielle Anwendungen beschränkt (GUIs,
Steuerung, Server-Prozesse) und etwas für Experten.
Allerdings vor einigen Jahren Trendwende bei Hardware Entwicklung:
- Leistungssteigerung der Prozessoren durch steigende Taktraten und optimierte
Prozessorabläufe ziemlich ausgereizt, jedenfalls stark verlangsamt.
- Stattdessen Einführung von
Multi-Core CPUs, d.h. mehrere
Prozessorkerne auf einem Chip. Z.Z. 4, 8, 12, 20 oder mehr Cores pro CPU gängig bei Server Prozessoren,
noch deutlich mehr bei Systemen mit Ko-Prozessoren (GPUs, MIC/Phi)
- Performance in Zukunft v.a. durch mehr Prozessorkerne.
-
Vectorisation bzw
SIMD Processing weiteres wichtiges Feature zur Steigerung der Performance
Verlangt zwingend
multi-threaded Programme um Leistungssteigerungen auszunutzen.
Siehe auch Artikel von Herb Sutter: The Free Lunch Is Over
Historie Transistor/CPU Entwicklung
CPU vs Memory Speed
Subsections
GDuckeck
2019-08-01