|
Nemoj ni da pokušavaš da "ubijaš" threadove na taj način. Mnogo bolje je da uspostaviš harmoniju u tvojoj aplikaciji i da smisliš način da signaliziraš threadove kad im je vreme da sami poumiru.
Evo daću ti jedan banalan primer zašto je loša ideja ubiti thread "nasilno"..
npr, taj thread koji želiš da ubiješ trenutno nešto radi, nešto radi npr sa nekom listom ili nizom, čiji je pristup zaštitio tako što je lock()-ovao neki odgovarajući mutex.
I sad ga ti ubiješ u sred pipkanja tog niza, i dok on drži lockovan mutex. Thread je ubijen, i mutex ostaje lockovan do beskraja, jer sada više ne postoji thread koji može da ga unlockuje. A takvu situaciju jednostavno ne možeš da detektuješ ni ispraviš. Zato bolje kaži threadu, pre neke globalne ili member promenljive da je vreme da ode na spavanje. I onda thread kad detektuje takvu direktivu, može lepo da završi svoj posao i vrati stanje u normalu pre nego što sam uradi pthread_exit()
|