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:
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:
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.