Thread-Pool

Neben den Problemen mit shared-memory Zugriff und Race-Conditions ist ein weiteres Problem die sinnvolle Regulierung der Anzahl der aktiven Threads.

Was genau "sinnvoll" ist hängt von verschiedenen Parametern ab:


Das Anpassen der Zahl der Threads an die jeweilige Rechnerumgebung ist mühsam, zeitaufwendig und fehleranfällig.

Besser ist andere Organisation bzw Re-Strukturierung des Ablaufs mit Thread-Pools:

Damit ist Aufteilung des Problems in Unter-Aufgaben und Zahl der laufenden Threads entkoppelt und man kann das Programm flexibel in unterschiedlichen Umgebungen ausführen. Aber: Erhöhter Programmieraufwand (Beispiel in Aufgaben).


Image thread-pool

((Source))


Es wäre wünschenswert wenn C++11 future bzw async die Thread-Pool Funktionalität leisten würden. In der Praxis aber auf aktuellen Linux/gcc Umgebungen nicht implementiert, nur 2 Betriebs-Modi:


GDuckeck 2019-08-01