Semáforo en c

Quiero consultar si me pueden ayudar a construir un semáforo en c, o darme los pasos principales para esto.

1 respuesta

Respuesta
1
Espero que esto le sirva:
Supongo que conoce perfectamente la teoría de sincronización de procesos, y lo relacionado, como los semáforos en este caso, así que voy al grano.
Los semáforos son tipos abstractos de datos, implementados dentro del sistema
Operativo, y cuyas operaciones de acceso son llamadas al sistema.
Una posible implementación del tipo sería como un registro, con dos campos:
* Un contador entero
* Una cola de punteros a los PCBs de los procesos que están en cada momento
Suspendidos en el semáforo
Definición de ejemplo:
typdef struct semaforo {
int contador;
PCB *cola;
} semaforo;
Le voy a explicar como usar los semáforos en C con el estándar POSIX.
#include <semaphore.h> //libreria
sem_t sem; //declaracion del tipo de dato
Operaciones:
int sem_init(sem_t *sem, int pshared, unsigned int value);
int sem_destroy(sem_t *sem);
int sem_wait(sem_t *sem);
int sem_trywait(sem_t *sem);
int sem_post(sem_t *sem);
int sem_getvalue(sem_t *sem, int *sval);
En cualquier manual POSIX y/o de UNIX podrá ver la especificación detallada de cada función y de muchas más.
También existen otro tipo de "objeto" para sincronizar procesos, pero que a diferencia de los semáforos, sólo permite que un proceso se suspenda, y son los "mutex".

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas