J'ai deux sémaphores x
(initialement à 1), et y
(initialement à 0).Synchronisation de sémaphore
Mon code de fonction de fil est un peu comme ceci:
...
wait(x);
//setting some vars
signal(x);
wait(y);
...
Je veux faire en sorte que les threads attendent sur y
en ligne, par exemple. si le premier thread a terminé la section x
-gardé en premier, il devrait attendre y
d'abord, & ainsi de suite. Dans l'implémentation actuelle, un changement de contexte intervenant après signal(x);
peut empêcher que cela se produise.
Existe-t-il un moyen de le faire, ou dois-je restructurer complètement le code pour éviter cette éventualité?