Multithreading pthread_cancel funktioniert nicht?
Hallo,
Ich möchte einen Thread in C++ und Linux "killen" der in einer Endlosschleife hängt. Leider funktioniert pthread_cancel nicht obwohl es mir 0 returned. Sobald ich aber mit pthread_join überprüfe ob der Thread wirklich gelöscht wurde, steckt mein Programm in einer Endlosschleife. Sprich der Cancel Befehl funktioniert nicht.Mir ist bewusst, dass pthread_cancel wenn möglich vermieden werden soll und stattdessen pthread_exit benutzt werden sollte, allerdings verbietet mir das die Uni (offensichtlich wollen die, dass wir uns bad practice einlernen...)
Hier das stark gekürzte CodeSnippet
void *foo()
{
//do sth
while(1)
{
//keep thread running
}
}
int main()
{
pthread_t t1;
pthread_create(&t1, NULL, &foo, NULL);
while(1)
{
//do sth
if(signal_to_kill)
{
pthread_cancel(t1);
pthread_join(t1, NULL);
break;
}
}
return 0;
}
Computer,
Software,
Mathematik,
Technik,
programmieren,
Informatik,
Physik,
C (Programmiersprache),
multithreading