“doc” (Col. : Science Sup 17x24) — 2007/7/19 — 18:18 — page 197 — #207
i
i
i
i
i
i
i
i
4.2 La programmation de base avec les fils
197
Une fonction Fibonacci concurrente
Voici un programme concurrent qui utilise la stratégie de diviser pour régner pour
calculer la fonction Fibonacci :
fun {Fib X}
if X=<2 then 1
else thread {Fib X-1} end + {Fib X-2} end
end
Ce programme est basé sur la fonction récursive séquentielle de Fibonacci ; la seule
différence est que le premier appel récursif est fait dans son propre fil. Ce programme
crée un nombre exponentiel de fils ! La figure 4.5 montre toutes les créations de fil et
les synchronisations pour l’appel {Fib 6}. Ce calcul utilise huit fils en tout. Vous
pouvez utiliser ce programme pour tester combien de fils votre implantation de Mozart
peut créer. Par exemple, exécutez
{Browse {Fib 26}}
en observant le Oz Panel pour voir combien de fils sont actifs. Si {Fib 26} se
termine trop vite, essayez un argument plus grand. Le Oz Panel, illustré dans la
figure 4.6, est un outil dans Mozart qui donne des informations sur l’utilisation des
ressources du système (temps d’exécution, utilisation de mémoire, fils, etc.). Pour
démarrer le Oz Panel, sélectionnez l’entrée Oz Panel dans le menu Oz de l’interface
interactive.
Synchronisation sur le résultat
6
F 4
F 5
F 2
F 1
F 3
F 2
F 2
F 2
F 1
F 3
F 4
F 2
F 1
F 3
Fil en exécution
Création d’un nouveau fil
F
Figure 4.5 Les créations de fil pour l’appel {Fib 6}.
© Dunod – La photocopie non autorisée est un délit
Précédent

- 212/370

Suivant