Skip to content

Commit 82d738b

Browse files
committed
Correction du pseudocode pour valeur non-signée
1 parent a79a00f commit 82d738b

1 file changed

Lines changed: 11 additions & 11 deletions

File tree

Theorie/Threads/coordination.rst

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,15 @@ Les deux principales fonctions de manipulation des sémaphores sont `sem_wait(3)
5959
6060
int sem_wait(semaphore *s)
6161
{
62-
s->val=s->val-1;
63-
if(s->val<0)
64-
{
65-
// Place this thread in s.queue;
66-
// This thread is blocked;
67-
}
62+
if(s->val>0)
63+
{
64+
s->val=s->val-1;
65+
}
66+
if(s->val==0)
67+
{
68+
// Place this thread in s.queue;
69+
// This thread is blocked;
70+
}
6871
}
6972
7073
La fonction `sem_post(3)`_ quant à elle peut schématiquement s'implémenter comme suit :
@@ -75,11 +78,8 @@ La fonction `sem_post(3)`_ quant à elle peut schématiquement s'implémenter co
7578
int sem_post(semaphore *s)
7679
{
7780
s->val=s->val+1;
78-
if(s.val<=0)
79-
{
80-
// Remove one thread T from s.queue;
81-
// Mark thread T as ready to run;
82-
}
81+
// Remove one thread T from s.queue;
82+
// Mark thread T as ready to run;
8383
}
8484
8585
Ces deux opérations sont bien entendu des opérations qui ne peuvent pas s'exécuter simultanément. Leur implémentation réelle comprend des sections critiques qui doivent être construites avec soin. Le pseudo-code ci-dessus ignore ces sections critiques. Des détails complémentaires sur l'implémentation des sémaphores peuvent être obtenus dans des livres de référence sur les systèmes d'exploitation [Stallings2011]_ [Tanenbaum+2009]_.

0 commit comments

Comments
 (0)