Semaforo no-binario usando binarios

Re: Semaforo no-binario usando binarios

de Nicolas Tabare Tomeo Raspino -
Número de respuestas: 0

Me parece que lo que planteas vos no implica error, por lo menos yo había entendido que dependía de la implementación por lo que se debía suponer que el Signal despierta un proceso al azar.
Si existe deadlock.
Ejemplo:
Supongo tres procesos que corren concurrentemente P1,P2,P3.
C inicializado en 0.
P1 ejecuta Wait() hasta el signal (mutex) includio. C vale -1, mutex 1, delay 0.
P2 ejecuta Wait() hasta el signal(mutex) incluido. C vale -2,mutex 1,delay 0.
P3 ejecuta dos veces Signal() completo. C vale 0,mutex 1, delay 1.
P1 ejecuta lo que le faltaba. C vale 0, mutex 1, delay 0.
P2 se bloquea en el wait(delay).

Esto no debería suceder dado que al estar implementando semáforos no binarios el ejecutar mas de un Signal() seguido por mas de que no se ejecuten Wait() debería aumentar la cantidad de permisos disponibles.