Bonjour,
Quelle sont les méthodes à disposition avec Ada pour gérer les accès simultanés aux données ?
De mémoire, les taches et types protégés peuvent nous simplifier la vie. Mais après, je sèche.
Merci
Bonjour,
Quelle sont les méthodes à disposition avec Ada pour gérer les accès simultanés aux données ?
De mémoire, les taches et types protégés peuvent nous simplifier la vie. Mais après, je sèche.
Merci
Yep, bonjour,
Donc j'ai fait une tache pour mon premier fichier, mais je ne sais pas si c'est fonctionnel. Vais-je avoir un quelconque problème ?
Up ! Merci
Bonjour, je remonte ce sujet car, ... je ne comprend rient au mécanisme de synchronisation.
Je souhaite protéger une liste contre les accès simultanés.
Je ne sais pas quoi faire...j'ai ce document http://www.ada-france.org/IMG/pdf/c_bellissant.pdf et la spécification de Gnat.Semaphores, mais je ne sais pas quoi mettre en place, puisque je comprend rien. A par pour le verrou de Dijkstar .
Si vous avez un poil de temps à m'accorder pour me faire un topo en français ce serait super.
Yep !
Pour faire ce que veux, il me semble qu'un sémaphore devrait suffire.
Bonjour,
Je pense aussi.
Maintenant, quel type de sémaphore ?
- As-tu N lecteurs (ie N threads ou tâches) et 1 producteur de tes données, sachant que tu ne veux pas bloquer les autres lecteurs pendant qu'un lecteur à la main ?
- Ou veux-tu un et un seul consommateur (lecteur ou producteur) à la fois?
Pour le premier, tu utilises la première version de sémaphore décrite dans Gnat.Sémaphores, dans l'autre, tu utilises la deuxième.
La première version est un peu plus délicate à utiliser car quand tu veus écrire ta donnée, il faut bloquer tout le monde et surtout attendre que tout le monde est fini de lire.
Bonsoir, merci pour ta réponse.
Je suis dans le second cas.
J'ai deux processus qui doivent accéder chacun leur tour à la ressource.
Donc dans chaque processus, je commence par un seize et termine par release.
Qu'est-ce qui empêche l'utilisation d'un type protégé dans ton cas (demande à titre informatif)?
Bonjour jc-miranda,
Je doit protéger une liste contre les accès simultanés.
Mais c'est peut-être pas clair.
Je doit pouvoir interdire l'accès à une liste dans des section de code du genre :
Même si je met toute ces procédure et fonction dans un objet protégé, je ne garantie pas une exploitation cohérente.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Aller_En_Tête(Liste) while not En_Fin(Liste) loop Traiter(L_Element_Courant(Liste) exit when En_Queue(Liste); Passer_Au_Suivant(Liste); end loop;
Donc, j'utilise un sémaphore pour obtenir le droit d'accès à la liste.
Et je rajoute deux ligne dans ma section critique.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 semaphore.seize; --attendre le droit d'accéder à la resource. Aller_En_Tête(Liste) while not En_Fin(Liste) loop Traiter(L_Element_Courant(Liste) exit when En_Queue(Liste); Passer_Au_Suivant(Liste); end loop; semaphore.release; -- libération de la ressource.
C'est très clair merci.
C'est juste que comme un gros boulet j'ai loupé la partie où tu précisais ton souci.
Mea culpa.
/me qui va retourner prendre des cours de lecture de forums.
Y a pas de mal
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager