Volevo cancellare il messaggio di prima ma mi e' poi scaduto il tempo dei 60 minuti e dovrei contattare l'amministratore per modificarlo... nooo... cmq era scorretto..
Chissà che il tentativo di 2 processi era una task ancora complicata per me..
Diciamo che c'era abbastanza confusione creata dall'esecuzione di questi ultimi. Probabilmente un implentazione di quel genere richiedeva qualche tecnica differente come un semaforo, ma per quello ancora devo migliorare un po...
Posto il codice corretto
codice:
#include<stdio.h>
#include<unistd.h>
#include<signal.h>
#include<pthread.h>
int array[5];
int *pt = &array[0];
void *increment_values()
{
int i;
for(i=0;i<5;i++)
(*pt++) = (i*50);
return &pt;
pthread_exit(0);
}
void *to_0_values()
{
int i;
for(i=4;i>=0;i--)
(*pt--) = 0;
return &pt;
pthread_exit(0);
}
void increment_thread()
{
pthread_t tp;
pthread_attr_t attr_tp;
printf("\n## 1st Thread increments values in Array ##\n");
pthread_attr_init(&attr_tp);
pthread_create(&tp, &attr_tp, increment_values, NULL);
}
void to_0_thread()
{
pthread_t tc;
pthread_attr_t attr_tc;
printf("\n## 2nd Thread removes values from Array ##\n");
pthread_attr_init(&attr_tc);
pthread_create(&tc, &attr_tc, to_0_values, NULL);
}
int main()
{
int i;
pid_t p = getpid();
if(p<0)
{
fprintf(stderr, "Error generating Process\n");
return 1;
}
else
{
printf("\n**Process %d calls 1st Thread for function \"increment_thread()\" wich calls function \"increment_values()\"\n",p);
increment_thread();
for(i=0;i<5;i++)
printf("array[%d] = %d\n", i, array[i]);
printf("\n**Process %d now is calling 2nd Thread for function \"to_0_thread()\" wich calls function \"to_0_values()\"\n", p);
to_0_thread();
for(i=0;i<5;i++)
printf("array[%d] = %d\n", i, array[i]);
printf("\nProcess & Threads successfully complets\n\n");
}
return 0;
}
Output...
codice:
**Process 15324 calls 1st Thread for function "increment_thread()" wich calls function "increment_values()"
## 1st Thread increments values in Array ##
array[0] = 0
array[1] = 50
array[2] = 100
array[3] = 150
array[4] = 200
**Process 15324 now is calling 2nd Thread for function "to_0_thread()" wich calls function "to_0_values()"
## 2nd Thread removes values from Array ##
array[0] = 0
array[1] = 0
array[2] = 0
array[3] = 0
array[4] = 0
Process & Threads successfully complets
Ancora una volta con qualche piccolo sforzo i miei "esperimenti" funzionano.. cmq io volevo fare il tutto con 2 processi ...
Accetto volentieri suggerimenti a riguardo..
Ciao Grazie!!