#include <pthread.h>
#include <stdio.h>
long Visitantes = 0;
pthread_mutex_t mutex;
void IncVisitantes() {
pthread_mutex_lock(&mutex);
Visitantes = Visitantes + 1;
pthread_mutex_unlock(&mutex);
}
void *HebraVisitas (void *argg) {
int i=0;
long *NumVisitas;
NumVisitas = (long *) argg;
for (i=0; i<*NumVisitas;i++) {
IncVisitantes();
}
}
int main () {
pthread_t th1, th2, th3, th4;
pthread_attr_t attr;
long visi1 = 1000000;
long visi2 = 2000000;
pthread_attr_init(&attr);
pthread_mutex_init(&mutex, NULL);
pthread_create(&th1, &attr, HebraVisitas, &visi1);
pthread_create(&th2, &attr, HebraVisitas, &visi2);
pthread_create(&th3, &attr, HebraVisitas, &visi1);
pthread_create(&th4, &attr, HebraVisitas, &visi2);
pthread_join(th1, NULL);
pthread_join(th2, NULL);
pthread_join(th3, NULL);
pthread_join(th4, NULL);
printf("El numero de visitas totales =%ld\n", Visitantes);
printf("Fin\n");
return 0;
}
Probad a realizar el ejercicio sin usar mutex y ampliando el número de visitantes. Comentar los resultados :D
No hay comentarios:
Publicar un comentario