pthreads beenden?

Benutzeravatar
ut53xuco
Mausschubser
Mausschubser
Beiträge: 57
Registriert: 20. Nov 2011 18:07

pthreads beenden?

Beitrag von ut53xuco » 12. Jan 2012 17:18

Hi,

Wie kann ich dafür sorgen, dass alle Threads die ich benutze nachdem ich sie benutzt habe beende? Denn mein Code funktioniert nicht mehr wenn ich die Threads an unterschiedlichen stellen benutze. Ich will erst eine gewisse Anzahl an Threads aufrufen, die was berechnen lassen, dann alle beenden und später nochmals Threads aufrufen, die etwas anderes berechnen.
Bisher mache ich es so:

Code: Alles auswählen

for (int j = 0; j < NUM_THREADS_CBVH; j++) {
		pthread_join(threadsCBVH[j], &statusCBVH);
		pthread_cancel(threadsCBVH[j]);
	}
Jedoch laufen die Threads die ich danach erzeuge nicht mehr.

genix
Windoof-User
Windoof-User
Beiträge: 39
Registriert: 16. Okt 2010 13:41

Re: pthreads beenden?

Beitrag von genix » 12. Jan 2012 18:19

Hi,

lass das pthread_cancel weg, so mach ich das:

Code: Alles auswählen

for(unsigned int i=0; i<thread_num; i++){
	if(pthread_join(threads[i], NULL) != 0){
		fprintf(stderr, "error while trying to join thread number %d\n", i);
	}
}
Grüße.

Benutzeravatar
ut53xuco
Mausschubser
Mausschubser
Beiträge: 57
Registriert: 20. Nov 2011 18:07

Re: pthreads beenden?

Beitrag von ut53xuco » 12. Jan 2012 19:39

Dann laufen die anderen Threads trotzdem nicht :(

Ankou
Mausschubser
Mausschubser
Beiträge: 85
Registriert: 15. Mai 2011 18:23

Re: pthreads beenden?

Beitrag von Ankou » 12. Jan 2012 20:08

pthread_join wartet dass der Thread beendet und pthread_cancel bricht ihn ab, das macht in der Reihenfolge keinen Sinn, wenn du join machst, die Threads aber nicht beenden, kannst du da auch lange warten.

Antworten

Zurück zu „Archiv“