Rsk
23-01-2011, 13:14
Ragazzi.. ho un programma strutturato nel modo seguente.
Il main crea vari thread
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);
Dove i producer si occupano di inviare a check dei dati e check scrive su schermo.
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?
Il main crea vari thread
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);
Dove i producer si occupano di inviare a check dei dati e check scrive su schermo.
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?