Semáforos y memoria compartida
Publicado por roleiland (2 intervenciones) el 09/07/2012 05:07:35
Hola, estoy trabajando con memoria compartida. Tengo un proceso, que crea y escribe en un segmento. Luego quiero que los otros procesos, puedan acceder a esa memoria siempre y cuando el principal no este escribiendo. Por eso necesito usar semáforos para sincronizar, pero tengo problemas. ¿Cómo hago para que el proceso que escribe bloquee a los otros procesos para que no puedan leer mientras se escribe?
Sería algo así:
Operacion.sem_num = 0;
Operacion.sem_op = -1;
Operacion.sem_flg = 0;
semop (Id_Semaforo, &Operacion, 1); // Cerrar semáforo
// Proceso que escribe
Operacion.sem_num = 0;
Operacion.sem_op = 1;
Operacion.sem_flg = 0;
semop (Id_Semaforo, &Operacion, 1); // Abrir semáforo
Luego en los otros procesos sería:
Comprobar semáforo (sin alterar el estado) <- no sé cómo se hace.
Leer datos
Gracias.
Sería algo así:
Operacion.sem_num = 0;
Operacion.sem_op = -1;
Operacion.sem_flg = 0;
semop (Id_Semaforo, &Operacion, 1); // Cerrar semáforo
// Proceso que escribe
Operacion.sem_num = 0;
Operacion.sem_op = 1;
Operacion.sem_flg = 0;
semop (Id_Semaforo, &Operacion, 1); // Abrir semáforo
Luego en los otros procesos sería:
Comprobar semáforo (sin alterar el estado) <- no sé cómo se hace.
Leer datos
Gracias.
Valora esta pregunta
0