El programa debe crear 5 hilos de ejcución. Cada hilo determina un número aleatorio entre 1 y 10. El hilo principal espera a que los hilos terminen, calcula la suma de los números generados aleatoriamente por cada hilo y muestra en pantalla dicha suma.
Me regresa datos que no corresponden (ejemplo):
Número aleatorio: 8
Número aleatorio: 7
Número aleatorio: 7
Número aleatorio: 7
Número aleatorio: 7
Suma de los números: 7
Aquí el código:
Código C:
Ver original
#include <pthread.h> #include <stdlib.h> #include <stdio.h> struct hilos_random_parms { int randi; }; int aleatorios[5]; int cont = 0; void* hilos_random(void* parameters) { struct hilos_random_parms* p = (struct hilos_random_parms*)parameters; cont++; return NULL; } int main() { pthread_t thread1_id; pthread_t thread2_id; pthread_t thread3_id; pthread_t thread4_id; pthread_t thread5_id; struct hilos_random_parms thread1_args; thread1_args.randi = 10; pthread_create(&thread1_id, NULL, &hilos_random, &thread1_args); pthread_create(&thread2_id, NULL, &hilos_random, &thread1_args); pthread_create(&thread3_id, NULL, &hilos_random, &thread1_args); pthread_create(&thread4_id, NULL, &hilos_random, &thread1_args); pthread_create(&thread5_id, NULL, &hilos_random, &thread1_args); pthread_join(thread1_id, NULL); pthread_join(thread2_id, NULL); pthread_join(thread3_id, NULL); pthread_join(thread4_id, NULL); pthread_join(thread5_id, NULL); int total = 0; int i; for (i = 0; i < 5; i++) { total += aleatorios[i]; } return 0; }