IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ada Discussion :

Paralellisme et centralisation


Sujet :

Ada

  1. #1
    Invité
    Invité(e)
    Par défaut Paralellisme et centralisation
    Bonjour.
    j'essai de concevoir un programme avec Ada qui génrère des message MIDI pour exploiter un instrument MIDI.

    J'ai écrit un paquetage "Device" qui fournit le type Device_Type, permet de l'initialiser, ouvrir, écrire, fermer un périphérique MIDI.
    Ce paquetage doit être exploité par un paquetage "Sheduler" qui doit permettre de séquencer les message MIDI de multiple générateurs(FX, lead, bass, drums, global) grace à une tache décrite comme suit :
    Code ada : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    task Sheduler_Process is
       entry Start;
       entry Stop;
       entry Reset;
       entry Halt;
       entry Receive(Message : in Message_Type; step : in Positive);
    end Sheduler_Process;

    Mon problème consiste à trouver comment démarrer, stopper les divers process - Sheduler, FX, Lead, bass, global.

    Je peux le faire depuis le main qui instancie chacun des générateurs avec le sheduler en paramètre :

    Code ada : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
     
       Device : Device_Type;
    begin
       Initialise(Device);
       if not intialized(device) then
          raise Specification_Error;
       end if;
       declare
           package Sheduler is new Midi.Sheduler(Device);
           package Global is new Midi.Global(Sheduler);
           package Fx is new Midi.Fx(Sheduler);
           -- etc
        begin
           Global.initialize;
           FX.initialize;
           -- etc
           Sheduler.Sheduler_Process.Start;
           Global.Global_Process.start;
           Fx.Fx_Process.Start;
           -- etc

    Mais n'y a- t- il plus élégant/fonctionnel à faire ?
    Merci.
    Dernière modification par Invité ; 12/10/2012 à 16h31.

  2. #2
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2012
    Messages : 29
    Points : 49
    Points
    49
    Par défaut
    Perso je ne déclarerais pas de tâche mais un type tâche. Puis je déclarerais un pointeur sur mon type tâche. Ainsi, la tâche créée ne commencerais pas à begin mais seulement lorsque j'écrirais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonPointeur := new MonTypeTache ;
    Et en utiliserant ada.unchecked_deallocation, cela mettrait fin à la tâche pointée (certes de manière un peu [beaucoup] barbare). Tu peux aussi créer une liste chaînée ou un tableau de pointeurs vers tâche pour limiter les variables.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Sigurd9 Voir le message
    Perso je ne déclarerais pas de tâche mais un type tâche. Puis je déclarerais un pointeur sur mon type tâche. Ainsi, la tâche créée ne commencerais pas à begin mais seulement lorsque j'écrirais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonPointeur := new MonTypeTache ;
    Et en utiliserant ada.unchecked_deallocation, cela mettrait fin à la tâche pointée (certes de manière un peu [beaucoup] barbare). Tu peux aussi créer une liste chaînée ou un tableau de pointeurs vers tâche pour limiter les variables.
    Y a de l'idée.. Mais ça répond pas au problème de la séquencialité du démarage des taches. Je voudrais les démarer les arrêter toute en un instant.
    ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/08/2006, 23h39
  2. Centraliser les struct dans un fichier
    Par Invité dans le forum C
    Réponses: 5
    Dernier message: 06/07/2006, 10h01
  3. Gestion centralisée des messages windows
    Par piiwhy dans le forum Delphi
    Réponses: 1
    Dernier message: 28/06/2006, 14h19
  4. Centraliser les accès à la base de données
    Par romaintaz dans le forum JDBC
    Réponses: 10
    Dernier message: 13/01/2006, 12h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo