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;
}