Hola,
Estoy repasando concurrencia y estuve pensando esta implementación.
En las PPT veo que la liberación del mutex se hace cruzada, es decir, el proceso que hace el V(wait) no libera la zona crítica para que lo haga el otro proceso al que despierta.
Ahora bien, pensando un poco en esto, veo que el que despierta luego no modificar variables globales, por lo que me parece que podria ser valido tambien no liberar el mutex de forma cruzada.
Les comparto como me parece que podria funcionar tambien:
Desde ya muchas gracias!!!.