Salve a tutti , sto facendo un programma in cui devo usare due thread concorrenti in cui è presente un array di dimensione 10 . il primo thread deve sommare tutti i valori di indici pare e il secondo i valori di indici dispari e darli in output nelle seguenti funzioni in cui sono contenuti i thread . Ad un certo punto mi sono bloccato perché non riesco a verificare se il contatore è pari o dispari . Ecco il programma :
#include <iostream>
#include <pthread.h>
#include <unistd.h>
using namespace std;
pthread_mutex_t sem;
int i=0;// contatore
int v[6]; // vettore
void *funz1(void *parametro)
{
int r=0,s=0;
pthread_mutex_lock(&sem);
usleep(100000);
for(i=0;i<6;i++){
r=i%2;
if(r==0)
{
s=s+v; //somma dell array
}
cout<<"somma i pari "<<s<<endl;
pthread_mutex_unlock(&sem);
usleep(90000);
}
}
void *funz2(void *parametro)
{
int r=0,s=0;
pthread_mutex_lock(&sem);
usleep(100000);
for(i=0;i<6;i++){
r=i%2;
if(r==1)
{
s=s+v;
}
cout<<"somma i dispari "<<s<<endl;
pthread_mutex_unlock(&sem);
usleep(90000);
}
}
int main()
{
for(i=0;i<6;i++){
cout<<"inserisci un numero \n";
cin>>v;
}
pthread_t tid1;
pthread_create(&tid1,0,funz1,0);
pthread_t tid2;
pthread_create(&tid2,0,funz2,0);
cout<<endl;
return 0;
}