Título: Semaforos en c Publicado por: prosebas en 16 Mayo 2021, 02:03 am Hola buenas noches a todos, estoy empezando en el tema de sincronización de procesos a través de semaforos basicamente lo que me piden hacer es que apartir de tres procesos A,B y C tenga como salida ABC ABC ABC utilizando semaforos.
Código
Esa es la implementación que llevo hasta el momento, sin embargo,la salida me es erronea Esta es mi salida: AAA BBB CCC Les agredezco si me pueden ayudar ;D Título: Re: Semaforos en c Publicado por: RayR en 16 Mayo 2021, 19:57 pm Es que así como lo hiciste no hay garantía de ningún orden específico. Y es que ni siquiera es seguro que los hilos se ejecuten en el orden de creación.
No sé si te dieron indicaciones específicas para el ejercicio, pero lo podrías resolver de forma sencilla con tres semáforos. Creas un array de ellos y el primero lo inicializas a 1, y los otros a 0. A cada hilo le podrías enviar como parámetro entero su número de índice. Cada hilo "n" espera por el semáforo n, e incrementa (sem_post) el semáforo n + 1, a excepción del último (2), que incrementará el primero (0). Esto lo podrías hacer así: Código
y para imprimir la letra correcta, algo como: Código También deberías llamar a sem_destroy para destruir los semáforos al final. Título: Re: Semaforos en c Publicado por: dijsktra en 25 Junio 2021, 10:22 am ... A cada hilo le podrías enviar como parámetro entero su número de índice. Cada hilo "n" espera por el semáforo n, e incrementa (sem_post) el semáforo n + 1, a excepción del último (2), que incrementará el primero (0). El planteamiento es correcto. Pero es importante resaltar el valor inicial de los semáforos. Todos a 0, menos el primero, a 1.Aqui va una implementación. Código
Ejemplo de salida Código: ABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABC... Título: Re: Semaforos en c Publicado por: RayR en 25 Junio 2021, 15:27 pm El planteamiento es correcto. Pero es importante resaltar el valor inicial de los semáforos. Todos a 0, menos el primero, a 1. ¿¿¿??? Pues eso es lo que puse en mi mensaje: Cita de: RayR el primero lo inicializas a 1, y los otros a 0. A cada hilo le podrías enviar como parámetro entero su número de índice. Cada hilo "n" espera por el semáforo n, e incrementa (sem_post) el semáforo n + 1, a excepción del último (2), que incrementará el primero (0). Título: Re: Semaforos en c Publicado por: dijsktra en 25 Junio 2021, 17:48 pm ¿¿¿??? Pues eso es lo que puse en mi mensaje: Tienes Razon, RayR... Acabe cansado de implementarlo y no lei del todo tu respuesta. Título: Re: Semaforos en c Publicado por: Eternal Idol en 25 Junio 2021, 19:26 pm Tienes Razon, RayR... Acabe cansado de implementarlo y no lei del todo tu respuesta. Bueno, trata de recordarlo para la proxima y no hacer tareas ajenas. |