Newsgroup: it.comp.os.linux.development
Titolo: thread e join..

e' possibile creare un thread e non fare il join dopo?
cioe' e' strano ma il thread appena creato sembra non partire, o se parte
termina istantaneamente...
Solo se faccio subito dopo il join tutto ok.. ma devo aspettare la fine del
thread figlio.
E' normale che al termine della funzione che crea il thread vengono
terminati i thread figli?
mah...che confusione...
--
---
Alessandro >>CoMiX<< Cominu
e-mail: 
aco...@tiscalinet.it
Icq: 116354077
Registered user at 
http://counter.li.org
 # 203765

 terminati i thread figli?
I thread vengono terminati quando il ps finisce, quando li cancelli, quando
ritorna la loro routine, quando vengono joinati.
Ah, ocio che un detached non puo' piu' essere joinato.
--
  Giuseppe "Cowo" Corbelli \/\ My software: 
http://cowo.mascanc.net
    **ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail**
           -<! GOD is real, unless declared as integer !>-

 termina istantaneamente...
La struttura del programma e` questa?
int main () {
	...
	pthread_create(...);
	return 0;
}
In questo caso uscendo da main il processo (e tutti i thread) terminano.
Potresti inserire la chiamata a join come ultima istruzione prima del
return:
int main () {
	...
	pthread_create(...);
	...
	pthread_join(...);
	return 0;
}
Oppure (ma non so quanto sia lecito) usare pthread_exit al posto di
return in main e rendere detached il thread:
int main () {
	...
	pthread_create(...);
	pthread_detach(...);
	...
	pthread_exit(NULL);
}
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
Il piu` bel momento dell'amore e` quando ci si illude che duri
per sempre; il piu` brutto, quando ci si accorge che dura
da troppo.

 Ah, ocio che un detached non puo' piu' essere joinato.
ok.. forse ci sono....grazie!


 }
Se posso permettermi direi che questo e' sbagliato. Il detachstate di un
thread lo si specifica con gli attributi alla creazione, oppure con la
routine pthread_detach ma nel codice del thread stesso. Il main non deve
uscire con pthread_exit.
-- 
  Giuseppe "Cowo" Corbelli \/\ My software: 
http://cowo.mascanc.net
        **ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail**
 [cowo@braveheart cowo]$ make sex
    make: *** No rule to make target 'sex'.  Stop. 
        :-((((

 uscire con pthread_exit.
Vada per il pthread_exit(NULL) che pare inutile anche a me..
..ma per pthread_detach() xche' deve essere usato all'interno del thread
stesso?
SPIEGAZIONI! :)
--
---
Alessandro >>CoMiX<< Cominu
e-mail: 
aco...@tiscalinet.it
Icq: 116354077
Linux User # 203765
[That's not a bug, that's a feature..]

 SPIEGAZIONI! :)
Ma scusa, sei nella routine che deve effettuare lo spawning dei thread.
Non ha senso fare il detach del main del programma principale.
Per cui se devi detachare un thread o lo fai al suo interno con
pthread_detach o usi gli attributi in fase di creazione.
--
  Giuseppe "Cowo" Corbelli \/\ My software: 
http://cowo.mascanc.net
    **ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail**


 Non ha senso fare il detach del main del programma principale.
Non il detach del main!! 
int main () {
	pthread_t th;
	pthread_create(&th, NULL, foo, bar);
	pthread_detach(th);
	do_something();
	return EXIT_SUCCESS;
}
Cosi`  il  thread  finisce  in detached  state. Ovviamente  si  potrebbe
chiamare pthread_detach(pthread_self());  all'interno del thread,  ma la
soluzione sopra mi sembra corretta. O no?
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
Non sempre quello che viene dopo e` progresso.
Alessandro Manzoni

 soluzione sopra mi sembra corretta. O no?
Probabilmente mi sono rincoglionito completamente :-(
Certo che hai ragione, ci mancherebbe.
--
  Giuseppe "Cowo" Corbelli \/\ My software: 
http://cowo.mascanc.net
    **ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail**
  -<! Drink To Your Brothers Who Are Never To Fall, We Are Brothers Of Metal
  		Here In The Hall! !>-
  			Manowar - Brothers Of Metal PT1