4
Je suis en train de comprendre le contrat de drainPermits dans la classe Java SémaphoreQue fait Semaphor.drainPermits si aucun permis n'est disponible?
Le JavaDoc lit simplement:
drainPermits public int()
Acquire and return all permits that are immediately available. Returns: the number of permits
Si aucun permis ne actuellement disponible, bloque-t-il et attend jusqu'à ce que l'un soit disponible?
Donc, si j'examine un code où il semble que quelqu'un l'ait utilisé pour le verrouillage, c'est une mauvaise surprise, n'est-ce pas? – Uri
Cela dépend exactement de ce qu'ils font. "L'utiliser pour le verrouillage" ne donne pas vraiment un indice. –
si elles l'initialisent à 1 et en utilisant drain pour mettre en œuvre un "tryAcquire" c'est bien. Dans de nombreux langages et systèmes, de nombreuses implémentations d'un mutex (non imbriqué) est un sémaphore initialisé à 1. – pgast