Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
/*Dado uma matriz de 10 elementos, criar uma thread para somar metade dos elementos da matriz e outra para somar a outra metade.*/ #include <pthread.h> #include <stdio.h> #define NUM_THREADS 2 int matriz[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; typedef struct { int id; int inicial_idx; int final_idx; int soma; } thread_arg; void* minha_thread(void* arg) { int i; thread_arg *a = (thread_arg*)arg; printf("THREAD %d FALANDO AQUI!\n", a->id); a->soma = 0; for (i = a->inicial_idx; i < a->final_idx; i++) { a->soma += matriz[i]; //printf("Thread %d, Somando Indice [%d]\n",a->id,i); } pthread_exit((void*)NULL); } int main() { int i, tam_metade_matriz=5; pthread_t tids[NUM_THREADS]; thread_arg args[NUM_THREADS]; //criando as threads for (i = 0; i < NUM_THREADS; i++) { args[i].id = i; args[i].inicial_idx = i * tam_metade_matriz; args[i].final_idx = (i+1)*5; pthread_create(&tids[i], (void*) NULL, minha_thread, (void*) &args[i]); } for (i = 0; i < NUM_THREADS; i++) { pthread_join(tids[i], (void*) NULL); } printf("FIM\n"); printf("T1= %d\n" , args[0].soma); printf("T2= %d\n" , args[1].soma); return 0; }
Compartilhar