From 2cafff45a15b6511d9625197ccccb0b09cdaf88a Mon Sep 17 00:00:00 2001 From: Markus Date: Thu, 15 Aug 2019 14:37:16 +0200 Subject: [PATCH] fix stop --- parameterManager.h | 2 +- programManager.cpp | 37 ++++++++++++++++++++++++++++++++++--- 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/parameterManager.h b/parameterManager.h index b0244d2..ea05108 100644 --- a/parameterManager.h +++ b/parameterManager.h @@ -53,7 +53,7 @@ struct Settings { proxy_port = 9050, default_maxDirs = 20; char pathSymbol = '/'; - unsigned maxThreads = 2; + unsigned maxThreads = 4; }; diff --git a/programManager.cpp b/programManager.cpp index c2fed99..b4a41fd 100644 --- a/programManager.cpp +++ b/programManager.cpp @@ -218,6 +218,7 @@ int ProgramManager::defaultModus(Settings *settings) } + //Wenn nex Thread noch in den Vector passt(weniger Threads als Max), dann Starte neuen mit data aus dem Vector... if(nextThread < threadList.size()) { threadList[nextThread]->setData(staffel, folge); if(pthread_create(&threadList[nextThread]->thread, nullptr, threadFunction, reinterpret_cast(threadList[nextThread])) != 0 ) { @@ -225,7 +226,7 @@ int ProgramManager::defaultModus(Settings *settings) return 48; } nextThread++; - } else { + } else { // Sonnst warte bis alle Fertig sind und restarte die Folge for( auto &e : threadList) { pthread_join(e->thread, nullptr); if(e->exitState != 0) { @@ -260,10 +261,28 @@ int ProgramManager::defaultModus(Settings *settings) - if(folge == settings->stopEpisode && settings->stopSeason < 1) // stoppe wenn stopfolge gleich der folge ist und stopstaffel nicht gesetzt wurde. + if(folge == settings->stopEpisode && settings->stopSeason < 1) { // stoppe wenn stopfolge gleich der folge ist und stopstaffel nicht gesetzt wurde. + for( auto &e : threadList) { + pthread_join(e->thread, nullptr); + if(e->exitState != 0) { + std::cout << "Error: Thread gab error zurück." << std::endl; + return e->exitState; + } + std::cout << "NachThread: " << e->returnValue << std::endl; + } return 0; - else if ( folge == settings->stopEpisode && staffel == settings->stopSeason) // stoppe wenn stopfolge = folge && stopstaffel == staffel + } + else if ( folge == settings->stopEpisode && staffel == settings->stopSeason) { // stoppe wenn stopfolge = folge && stopstaffel == staffel + for( auto &e : threadList) { + pthread_join(e->thread, nullptr); + if(e->exitState != 0) { + std::cout << "Error: Thread gab error zurück." << std::endl; + return e->exitState; + } + std::cout << "NachThread: " << e->returnValue << std::endl; + } return 0; + } } //Setzte Startepisode zurück für nächste Staffel settings->startEpisode = 1; @@ -275,6 +294,18 @@ int ProgramManager::defaultModus(Settings *settings) } } + + for( auto &e : threadList) { + pthread_join(e->thread, nullptr); + if(e->exitState != 0) { + std::cout << "Error: Thread gab error zurück." << std::endl; + return e->exitState; + } + std::cout << "NachThread: " << e->returnValue << std::endl; + } + + + std::cout << " > Fertig" << std::endl; return 0; }