Buscar

Threadimparpar2

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

/*Dado uma matriz de 10 elementos, criar uma thread para somar os elementos de índice par e outra thread para somar os elementos de 
índice ímpar.*/
#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 soma;
} thread_arg;
void* minha_thread(void* arg) {
 
 
 int i;
 thread_arg *a = (thread_arg*)arg;
 printf("THREAD %d FALANDO AQUI!\n", a->id + 1);
 a->soma = 0;
 
 
 for (i = a->inicial_idx; i < 10; i=i+2)
 {
 a->soma += matriz[i];
	printf("Thread %d, Somando Indice [%d]\n",a->id + 1,i);
 }
 pthread_exit((void*)NULL);
}
int main() {
 int i;
 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;
 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;
}

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando