Potrzebuje stworzyć przykładowy testowy program który:
- Sprawdzi co 15 sekund czy wątek nadal działa jesli nie to ponownie go uruchamia
- Uruchomiony wątek działa do czasu wykonania pracy może to zając dla przykładu 14 sekund lub 16 sekund
nastepnie zakończy sam siebie - Jesli zajmie 14 sekund to funkcja w głównym wątku main ponownie go uruchomi
- Jeżeli zajmie to 16 sekund to funkcja w głównym wątku nie uruchomi go przez następne 15 sekund
W związku z tym zrobiłem prosty program ale działa on na zasadzie flagi.
Wątek dodakowy przestawia flagę na true i wtedy główny program wie, że
dany wątek jest uruchomiony a po zakończeniu przestawia go na false
Czy jesty jakieś inne roziazanie nie wiem może jest w standardzie
jakaś informacja o wątkach jakaś tablica uruchomionych wątków i zamiast
flagi tam bym sprawdzał? czy ta flaga jednak to dobre wyjście ?
Znalazłem dobry materiał tutaj: http://www.zsk.ict.pwr.wroc.pl/zsk/repository/dydaktyka/so/watki.html
Ale nie wiem jak to wykorzystać do mojego zadania.
Poniżej mój przykładowy kod:
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
pthread_t threadRuningTest;
bool isTestRun;
void *RuningTest(void *) {
isTestRun = true;
/* make some code */
isTestRun = false;
sleep(14);
//sleep(16);
pthread_exit(0);
}
int main(void) {
cout << "main" << endl;
/* start testthread */
while(true){
if (isTestRun == false) {
/* test run*/
pthread_create( &threadRuningTest, NULL, &RuningTest, NULL);
}
sleep(15);
}
}