![patrick patrick](//static.vivaolinux.com.br/imagens/fotos/desconhecido.png)
skyemaster
(usa Debian)
Enviado em 14/11/2016 - 15:13h
Queria saber como eu faço para incrementar o array do contador, tentei de tudo, meu professor falou que o código está bem encaminhado, porém até agora sem sucesso. Nesse codigo eu coloquei somente um vetor de 2000 numeros e 2 threads para que depois que desse certo eu colocaria as outras threads.
#include <pthread.h>
#include <stdlib.h>
#include <stdio.h>
#define NUM_NUMEROS 2
static pthread_mutex_t mutexes[NUM_NUMEROS] = {
PTHREAD_MUTEX_INITIALIZER,
PTHREAD_MUTEX_INITIALIZER,
};
int contadores[NUM_NUMEROS];
void *thread(void *arg);
int dados[2000];
int main(){
int i, c;
int dado_thread1 = 0, dado_thread2 = 1000;
pthread_t thread1, thread2;
for(i = 0; i < 1200; i++){
dados[i] = rand()%10;
}
pthread_create(&thread1, NULL, thread, &dado_thread1);
pthread_create(&thread2, NULL, thread, &dado_thread2);
pthread_join(thread1, NULL);
pthread_join(thread2, NULL);
for(i = 0; i < 10; i++){
printf(" Resultado: %d\n", contadores[i]);
}
return 0;
}
void *thread(void *arg){
// Converte o ponteiro recebido
int i;
int *indice_ponteiro = (int*) arg;
int indice = *indice_ponteiro;
for(i = indice; i < indice + 1000; i++){
int i = 2; // incrementar o contador do número 2
pthread_mutex_lock(&mutexes[i]);
contadores[i]++;
pthread_mutex_unlock(&mutexes[i]);
}
return NULL;
}