|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Dec 2006
Messaggi: 314
|
[C - lpthread] Uccidere e ricreare thread
Ragazzi.. ho un programma strutturato nel modo seguente.
Il main crea vari thread Codice:
do{
// inizializzo le strutture dati da passare ai thread
for(i=0; i< N; i++)
{
producer[i].x = i ;
}
//creazione dei thread
for(i=0; i<N; i++)
{
pthread_create(&elencoId[i], NULL, &producer, &producer[i]);
}
//creazione thread producer2
pthread_create(&elencoId[4], NULL, &producer2, &producer2);
//avvio controllo
check();
//attendo che i thread finiscano
for(i=0; i<N+1; i++) pthread_join(elencoId[i], NULL);
}
while(condition);
Check legge i dati dalla memoria condivisa in cui scrivono i producer. Ora.. non so come ritornare al main quando i thread finiscono il loro compito e riavviare i thread. Potete aiutarmi?
__________________
Athlon64 x2 5600 - AsRock ALiveNF5eSata2+ - kingston 2GB ddr2 800 - GeForce 8800gts 320MB |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Mar 2005
Città: ~
Messaggi: 740
|
così a naso:
Codice:
pthread_create(&elencoId[4], NULL, &producer2, &producer2); crei un thread che esegue il metodo "producer2" e gli pass come argomento il puntatore della funzione stessa... EDIT altra cosa: Codice:
elencoId[4] Codice:
elencoId[i] Mi raccomando, verifica che elencoId[.] sia di dimensione opportuna...
__________________
Ciao ciao cagnolino Billy MacMini late 2009, 2.53GHz, 4GB ram, 320GB hard disk, Snow Leopard 10.8.2 - iPod Nano 6th gen. XBOX Live GamerTag: InsaneMau |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Dec 2006
Messaggi: 314
|
Quote:
il problema è che, una volta creati i thread, non so come riportare il controllo al main una volta che tutti i thread hanno finito il loro compito.. e da li ricrearli
__________________
Athlon64 x2 5600 - AsRock ALiveNF5eSata2+ - kingston 2GB ddr2 800 - GeForce 8800gts 320MB |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:49.




















