Tengo una consulta sobre el siguiente código:
void* funcion(void* arg);
typedef struct Param{
int a;
int b;
int result;
pthread_mutex_t mutex;
}Param;
int main(int argc, char **argv) {
pthread_t idThread1, idThread2;
Param param;
param.a = 1;
param.b = 2;
pthread_create(&idThread1, NULL, &funcion, ¶m);
pthread_create(&idThread2, NULL, &funcion, ¶m);
pthread_join(idThread1,NULL);
pthread_join(idThread2,NULL);
printf("La suma da %d\n", param.result);
pthread_exit(NULL);
}
void* funcion(void* arg){
Param* param = (Param*)arg;
pthread_mutex_lock(&(param->mutex));
param->result = param->a + param->b;
/* pthread_mutex_unlock(&(param->mutex)); */
printf("Hola mundo\n");
pthread_exit(NULL);
}
En teoria por lo que entiendo, debería quedar bloqueado el thread 2, dado
que el thread 1 nunca desbloqueo el mutex. Ahora si lo ejecutó funciona lo
mas bien (no se bloquea). Si alguien por favor me puede indicar porque no se
bloquea o si existe algún error en el código.
Estoy probando el tema de mutex, si dejo la variable mutex como global
(fuera de la estructura Param) y dejo comentado el unlock ahí si queda
bloqueado, pero cuando meto la variable mutex dentro de la estructura ya no
queda bloqueado y no entiendo porque.
Disculpen las molestias!.
Sol
_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion