================ Lösungsvorschlag ================ Das Problem ist, dass nach dem Aufruf des äußeren `submit` sofort am Ende von `main` der Dekonstruktor des Thread-Pools aufgerufen wird und somit `finished` auf `true` gesetzt wird. Während sich einer der beiden Threads mit dem ersten Job beschäftigt, findet der andere Thread `finished` auf `true` gesetzt vor zusammen mit einer leeren Liste von Jobs. Das nimmt dieser zum Anlass, seine Tätigkeit zu terminieren. Das hat dann die Konsequenz, das all die neu erzeugten Jobs nur von dem einen verbliebenen Thread ausgeführt werden können. Solange noch Threads aktiv mit der Abarbeitung von Jobs beschäftigt sind, sollten die anderen nicht vorzeitig terminieren, da immer noch neue Jobs hinzukommen können. :import:session16/tpool3.cpp ---- SHELL (path=session16) --------------------------------------------------- g++ -O3 -g -I/home/numerik/pub/hpc/session16 -std=c++11 -o tpool3 tpool3.cpp ./tpool3 ------------------------------------------------------------------------------- :navigate: up -> doc:index back -> doc:session16/page03 next -> doc:session16/page05