“doc” (Col. : Science Sup 17x24) — 2007/7/19 — 18:18 — page 215 — #225
i
i
i
i
i
i
i
i
4.5 Exercices
215
Avec Skip1, nous pouvons construire un afficheur vidéo qui, après avoir affiché une
image, saute jusqu’à la dernière image transmise :
proc {Display Xs}
case {Skip1 Xs} of X|Xr then
{DisplayFrame X} {Display Xr}
[] nil then skip end
end
Cette solution fonctionnera bien même s’il y a des variations dans le taux d’arrivée
des images et dans le temps nécessaire pour afficher une image.
4.5 EXERCICES
➤ Exercice 1 — La sémantique des fils
Considérez la variation suivante de l’instruction utilisée dans la section 4.1.3
pour illustrer la sémantique des fils :
local B in
thread B=true end
thread B=false end
if B then {Browse yes} end
end
Pour cet exercice, faites les choses suivantes :
a) Énumérez toutes les exécutions possibles de cette instruction.
b) Elles provoquent toutes une terminaison anormale du programme. Faites un
petit changement au programme pour éviter ces terminaisons anormales.
➤ Exercice 2 — Les fils et le ramassage de miettes
Cet exercice examine comment le ramassage de miettes se comporte avec les fils
et les variables dataflow. Considérez le programme suivant :
proc {B _} {Wait _} end
proc {A}
Collectible={NewDictionary}
in {B Collectible} end
L’opération {Wait X} suspend le fil courant jusqu’à ce que X soit déterminée.
Après l’appel {A}, la mémoire occupée par Collectible est-elle récupérable ? Donnez une réponse en réfléchissant sur la sémantique. Vérifiez ensuite
que le système se comporte ainsi.
© Dunod – La photocopie non autorisée est un délit
Précédent

- 230/370

Suivant