Correction du pseudocode sem_wait et sem_post#21
Open
precondition wants to merge 2 commits intoUCL-INGI:masterfrom
Open
Correction du pseudocode sem_wait et sem_post#21precondition wants to merge 2 commits intoUCL-INGI:masterfrom
sem_wait et sem_post#21precondition wants to merge 2 commits intoUCL-INGI:masterfrom
Conversation
e9ac544 to
0eac0aa
Compare
sem_wait et sem_post
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
La diapositive 6 du chapitre 7 sur les sémaphores dit très clairement que le type de la valeur du sémaphore est un entier non-signé.

Le syllabus évite de dire que c'est un entier non-signé mais la formulation « un entier qui stocke la valeur, positive ou nulle, du sémaphore » pourrait sous-entendre qu'un entier non-signé est utilisé.
En outre, nous pouvons aussi lire dans
man sem_overviewque la valeur d'un sémaphore ne peut pas descendre en dessous de zéro:Si on suppose que la valeur est un entier non-signé, la condition
if(s->val<0)du pseudo-code fourni poursem_waitest une contradiction; une condition jamais satisfaite.Idem pour
if(s->val<=0)danssem_post. Il est impossible d'incrémenter un entier non-signé et d'obtenir un nombre inférieur à 0.Ce PR met à jour le pseudo-code de
sem_waiten décrémentant la valeur uniquement si celle-ci est strictement supérieure à 0 et en bloquant le thread si la valeur est égale à 0 (une condition réalisable, contrairement às->val<0) et enlève leifdanssem_post.