Buenas tardes,
En la solución publicada para el ejercicio de concurrencia hay una cosa que no me queda clara. Yo terminé optando por limitar la concurrencia deliberadamente, porque consideré que una solución como la que plantea la solución podía llegar a ser peor que limitarla, por lo siguiente:
Como pueden pasar 28 nadadores amateurs, puede darse el caso que entren 28 nadadores que necesiten 2 flotadores c/u. En esta situación, si todos los nadadores llegan a pedir el primer flotador al mismo tiempo, van a quedar dos flotadores libres, y sólo 2 de los 28 nadadores van a obtener el segundo flotador y poder entrar a nadar.
Cuando esto pasa quedan 26 nadadores amateurs esperando en busy waiting que los 2 que lograron pasar terminen de nadar, lo cual puede demorar una cantidad considerable de tiempo. Esto no es un problema grave? Porque en este punto los nadadores ya entraron y no solo tenés a los 26 en busy waiting, sino que si llegan nadadores profesionales, van a tener que esperar que esos 26 que faltan puedan nadar porque ya pasaron el chequeo del monitor, lo cual para mí termina afectando la preferencia de los profesionales.
El otro problema que veo es que esos 26 igual no van a poder acceder nunca en simultáneo a la piscina en esta situación, porque cuando uno de los que 2 que está nadando termine libera 2 flotadores nada más, es decir que pueden entrar 2 más de los 26,y así sucesivamente para los que vayan terminando.
El caso que describo es el más extremo, pero creo que el problema se da también cuando algunos de los nadadores sólo necesitan 1 flotador, sólo que se acorta la espera en busy waiting de los demás.
Capaz no entendí la solución bien, pero creo que lo describo puede pasar. Quedo a la espera de su respuesta, disculpas por lo largo del mensaje!
Saludos