Correction du pseudocode sem_wait
et sem_post
#21
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_overview
que 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_wait
est 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_wait
en 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 leif
danssem_post
.