dyablo96
11-11-2013, 19:03
ciao a tutti, ho un problema nel seguente esercizio:
allora dopo aver generato un vettore con dei numeri casuali devo forkare un certo numero di processi che decide l'utente.
ora ogni processo forkato dovra cercare in una certa area del vettore.
così creo una matrice che in base alla lunghezza del vettore e del numero dei processi contiene l'inizio e la fine dell'area riservata ad ogni processo figlio.
gli spazzi esclusi dovranno essere controllati dal processo padre.
io incontro problemi solo nel momento in cui i processi figli devono cercare un numero, infatti sono così veloci che non faccio in tempo ad incrementare la riga della matrice di ricerca che loro hanno già acquisito l'area di ricerca sbagliata.
forse però se vi posto il codice che devono eseguire i processi figli e il processo padre capite meglio :D .
if(PIDfiglio != ProcessoPadre)
{
int inizio = matrice_ricerca[indice_riga_matrice][1];
int fine = matrice_ricerca[indice_riga_matrice][2];
indice_riga_matrice++;
for(i=inizio;i<=fine;i++)
{
if(elementi[i] == num_da_cercare)
{
printf("F: E' stato trovato alla posizione %d del vettore elementi\n",i);
}
}
}
else
{
sleep(2);
int inizio = matrice_ricerca[Numero][1];
int fine = matrice_ricerca[Numero][2];
for(i=inizio;i<=fine;i++)
{
if(elementi[i] == num_da_cercare)
{
printf("P: E' stato trovato alla posizione %d del vettore elementi\n",i);
}
}
}
se non avete capito quello che devo fare scrivete pure, cercherò di essere ancora più chiaro :)
allora dopo aver generato un vettore con dei numeri casuali devo forkare un certo numero di processi che decide l'utente.
ora ogni processo forkato dovra cercare in una certa area del vettore.
così creo una matrice che in base alla lunghezza del vettore e del numero dei processi contiene l'inizio e la fine dell'area riservata ad ogni processo figlio.
gli spazzi esclusi dovranno essere controllati dal processo padre.
io incontro problemi solo nel momento in cui i processi figli devono cercare un numero, infatti sono così veloci che non faccio in tempo ad incrementare la riga della matrice di ricerca che loro hanno già acquisito l'area di ricerca sbagliata.
forse però se vi posto il codice che devono eseguire i processi figli e il processo padre capite meglio :D .
if(PIDfiglio != ProcessoPadre)
{
int inizio = matrice_ricerca[indice_riga_matrice][1];
int fine = matrice_ricerca[indice_riga_matrice][2];
indice_riga_matrice++;
for(i=inizio;i<=fine;i++)
{
if(elementi[i] == num_da_cercare)
{
printf("F: E' stato trovato alla posizione %d del vettore elementi\n",i);
}
}
}
else
{
sleep(2);
int inizio = matrice_ricerca[Numero][1];
int fine = matrice_ricerca[Numero][2];
for(i=inizio;i<=fine;i++)
{
if(elementi[i] == num_da_cercare)
{
printf("P: E' stato trovato alla posizione %d del vettore elementi\n",i);
}
}
}
se non avete capito quello che devo fare scrivete pure, cercherò di essere ancora più chiaro :)