Sémaphores étranges
3 sujets de 1 à 3 (sur un total de 3)
-
Yo tous, je viens de trouver un truc bizzare avec les sémaphores. Imaginons que j’obtienne un sémaphore en accés partagé avec ObtainSemaphoreShared() pour lire une liste, de temps en temps je dois y écrire et à ce moment là j’utilise ObtainSemaphore() pour bloquer la liste à toute autre tâche en ayant toujours ObtainSemaphoreShared() actif.
Ma question la voici: comment se fait-il que ObtainSemaphore() bloque l’application si ObtainSemaphoreShared() est toujours actif, sachant que ma tâche est la seule à jouer avec le sémaphore. Est-ce un bug ? Pourquoi ne puis-je pas passer d’un état “partagé” à un état “privé” si aucune autre tâche n’a bloqué le sémpahore…
Si quelqu’un a une solution, parce que j’en ai marre de réécrire tout le système.
Henes ?
De ce que je comprends de l’autodoc, il faut que tu libères les sémaphores partagés d’abord avant de tenter l’accès exclusif : “Any exlusive locker will be held off until all shared lockers
release the semaphore”.
Mais apparemment tu dis qu’aucune autre tâche ne le possède à ce moment, donc c’est pas ça…
Sinon je lis aussi :
“A task owning a shared lock must not attempt to get an exclusive
lock on the same semaphore.”
Serait-ce ça ton problème ?
3 sujets de 1 à 3 (sur un total de 3)
- Vous devez être connecté pour répondre à ce sujet.
› Forums › AmigaOS, MorphOS et AROS › Développement › Sémaphores étranges