Sémaphores étranges
3 sujets de 1 à 3 (sur un total de 3)
3 sujets de 1 à 3 (sur un total de 3)
- Vous devez être connecté pour répondre à ce sujet.
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)
› Forums › AmigaOS, MorphOS et AROS › Développement › Sémaphores étranges
© 2024 Amiga Impact.
Construit avec par Thèmes Graphene.