-
Notifications
You must be signed in to change notification settings - Fork 0
/
mutex.c
52 lines (37 loc) · 1.33 KB
/
mutex.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/*Desarrollar un programa en C que utilice hilos y mutexes para calcular la suma de los números
del 0 al 99.999. Trabajar con dos hilos que deben ejecutar esta tarea en una sección crítica,
lo que significa que un solo hilo puede realizar esta operación a la vez. El objetivo es
garantizar la exclusividad en el acceso a la sección crítica utilizando mutexes.
Por último ejecutar el código y observar cómo los hilos calculan la suma de manera concurrente
pero segura. Asegurarse de que los resultados sean correctos y que se eviten las condiciones de carrera.*/
#include <stdio.h>
#include <pthread.h>
pthread_mutex_t lock;
// Ejecución de Hilo + Sección Critica
void *Hilos()
{
// Bloquando acceso Región Critica
pthread_mutex_lock(&lock);
// Sección Critica
int resultado = 0;
for (int i = 0; i < 100000; i++)
{
resultado += i;
}
printf("Hilo de la region critica. Resultado Suma: %d\n", resultado);
// Liberando acceso Región Critica
pthread_mutex_unlock(&lock);
return NULL;
}
// Función Principal
int main()
{
pthread_t hilo1, hilo2;
pthread_mutex_init(&lock, NULL);
pthread_create(&hilo1, NULL, Hilos, NULL);
pthread_create(&hilo2, NULL, Hilos, NULL);
pthread_join(hilo1, NULL);
pthread_join(hilo2, NULL);
pthread_mutex_destroy(&lock);
return 0;
}