Código C:
Ver original
#include <pthread.h> // libria para hilos #include <stdlib.h> #include <unistd.h> // acceso a la API POSIX del SO #include <stdio.h> char ids[3] = "XY"; // arreglo int idHilos; // identificadores de hilos pthread_mutex_t semaforo; // Global para que todos accedan al mutex void *imprime(void *var){ // funcion que ejecutaran los hilos pthread_mutex_lock(&semaforo); // Bloqueamos el acceso int mi_id = *((int*)var); // numero del hilo if(mi_id == 0) // 1er hilo ids[0] = 'D'; if(mi_id == 1) // 2do hilo ids[1] = 'M'; pthread_mutex_unlock(&semaforo); return NULL; } int main(){ pthread_t h, p; idHilos = 0; pthread_create(&h, NULL, imprime, &(idHilos)); idHilos = 1; pthread_create(&p, NULL, imprime, &(idHilos)); pthread_join(h, NULL); pthread_join(p, NULL); // imprimo el arreglo for(int i = 0; i < 11; i++){ } return 0; }
Pero de "XY" pasa a "XM" o sea la X no me la cambia por la D el primer hilo como que no está haciendo nada....
Ayuda! ... alguna sugerencia .. gracias por el tiempo eso si